added a module for interfacing to hardware LCD
This commit is contained in:
		
							parent
							
								
									c1dfa75845
								
							
						
					
					
						commit
						9c2355ba4f
					
				
							
								
								
									
										65
									
								
								src/core/src/hw/hw_lcd.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/core/src/hw/hw_lcd.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | ||||
| /**
 | ||||
|  * Copyright (C) 2013 Citrus Emulator | ||||
|  * | ||||
|  * @file    hw_lcd.cpp | ||||
|  * @author  bunnei | ||||
|  * @date    2014-04-05 | ||||
|  * @brief   Hardware LCD interface | ||||
|  * | ||||
|  * @section LICENSE | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation; either version 2 of | ||||
|  * the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, but | ||||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details at | ||||
|  * http://www.gnu.org/copyleft/gpl.html
 | ||||
|  * | ||||
|  * Official project repository can be found at: | ||||
|  * http://code.google.com/p/gekko-gc-emu/
 | ||||
|  */ | ||||
| 
 | ||||
| #include "log.h" | ||||
| #include "core.h" | ||||
| #include "hw_lcd.h" | ||||
| 
 | ||||
| namespace LCD { | ||||
| 
 | ||||
| static const u32 kFrameTicks = 268123480 / 30; // 268MHz / 30 frames per second
 | ||||
| 
 | ||||
| u64 g_last_ticks = 0; ///< Last CPU ticks
 | ||||
| 
 | ||||
| template <typename T> | ||||
| inline void Read(T &var, const u32 addr) { | ||||
| } | ||||
| 
 | ||||
| template <typename T> | ||||
| inline void Write(u32 addr, const T data) { | ||||
| } | ||||
| 
 | ||||
| /// Update hardware
 | ||||
| void Update() { | ||||
|     u64 current_ticks = Core::g_app_core->ticks(); | ||||
| 
 | ||||
|     if ((current_ticks - g_last_ticks) >= kFrameTicks) { | ||||
|         g_last_ticks = current_ticks; | ||||
|         NOTICE_LOG(LCD, "Update frame"); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// Initialize hardware
 | ||||
| void Init() { | ||||
|     g_last_ticks = Core::g_app_core->ticks(); | ||||
| 
 | ||||
|     NOTICE_LOG(LCD, "LCD initialized OK"); | ||||
| } | ||||
| 
 | ||||
| /// Shutdown hardware
 | ||||
| void Shutdown() { | ||||
|     NOTICE_LOG(LCD, "LCD shutdown OK"); | ||||
| } | ||||
| 
 | ||||
| } // namespace
 | ||||
							
								
								
									
										64
									
								
								src/core/src/hw/hw_lcd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/core/src/hw/hw_lcd.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | ||||
| /**
 | ||||
|  * Copyright (C) 2013 Citrus Emulator | ||||
|  * | ||||
|  * @file    hw_lcd.h | ||||
|  * @author  bunnei | ||||
|  * @date    2014-04-05 | ||||
|  * @brief   Hardware LCD interface | ||||
|  * | ||||
|  * @section LICENSE | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation; either version 2 of | ||||
|  * the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, but | ||||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details at | ||||
|  * http://www.gnu.org/copyleft/gpl.html
 | ||||
|  * | ||||
|  * Official project repository can be found at: | ||||
|  * http://code.google.com/p/gekko-gc-emu/
 | ||||
|  */ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "common_types.h" | ||||
| 
 | ||||
| namespace LCD { | ||||
| 
 | ||||
| enum { | ||||
|     TOP_ASPECT_X        = 0x5, | ||||
|     TOP_ASPECT_Y        = 0x3, | ||||
|      | ||||
|     TOP_HEIGHT          = 240, | ||||
|     TOP_WIDTH           = 400, | ||||
|     BOTTOM_WIDTH        = 320, | ||||
| 
 | ||||
|     FRAMEBUFFER_SEL     = 0x20184E59, | ||||
|     TOP_LEFT_FRAME1     = 0x20184E60, | ||||
|     TOP_LEFT_FRAME2     = 0x201CB370, | ||||
|     TOP_RIGHT_FRAME1    = 0x20282160, | ||||
|     TOP_RIGHT_FRAME2    = 0x202C8670, | ||||
|     SUB_FRAME1          = 0x202118E0, | ||||
|     SUB_FRAME2          = 0x20249CF0, | ||||
| }; | ||||
| 
 | ||||
| template <typename T> | ||||
| inline void Read(T &var, const u32 addr); | ||||
| 
 | ||||
| template <typename T> | ||||
| inline void Write(u32 addr, const T data); | ||||
| 
 | ||||
| /// Update hardware
 | ||||
| void Update(); | ||||
| 
 | ||||
| /// Initialize hardware
 | ||||
| void Init(); | ||||
| 
 | ||||
| /// Shutdown hardware
 | ||||
| void Shutdown(); | ||||
| 
 | ||||
| 
 | ||||
| } // namespace
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei