trunk/src/mess/machine/gb.c
| r18540 | r18541 | |
| 4 | 4 | |
| 5 | 5 | Machine file to handle emulation of the Nintendo Game Boy. |
| 6 | 6 | |
| 7 | Cardridge port pinouts: |
| 8 | Pin Name Description |
| 9 | 1 VCC +5 VDC |
| 10 | 2 PHI CPU clock ? |
| 11 | 3 /WR Write |
| 12 | 4 /RD Read |
| 13 | 5 /CS SRAM select |
| 14 | 6 A0 Address 0 |
| 15 | 7 A1 Address 1 |
| 16 | 8 A2 Address 2 |
| 17 | 9 A3 Address 3 |
| 18 | 10 A4 Address 4 |
| 19 | 11 A5 Address 5 |
| 20 | 12 A6 Address 6 |
| 21 | 13 A7 Address 7 |
| 22 | 14 A8 Address 8 |
| 23 | 15 A9 Address 9 |
| 24 | 16 A10 Address 10 |
| 25 | 17 A11 Address 11 |
| 26 | 18 A12 Address 12 |
| 27 | 19 A13 Address 13 |
| 28 | 20 A14 Address 14 |
| 29 | 21 A15 Address 15 |
| 30 | 22 D0 Data 0 |
| 31 | 23 D1 Data 1 |
| 32 | 24 D2 Data 2 |
| 33 | 25 D3 Data 3 |
| 34 | 26 D4 Data 4 |
| 35 | 27 D5 Data 5 |
| 36 | 28 D6 Data 6 |
| 37 | 29 D7 Data 7 |
| 38 | 30 /RST Reset |
| 39 | 31 AUDIOIN Never used ? |
| 40 | 32 GND Ground |
| 41 | |
| 42 | |
| 7 | 43 | TODO: |
| 8 | 44 | - YongYong mapper: |
| 9 | 45 | - During start there are 2 writes to 5000 and 5003, it is still unknown what these do. |
| 10 | 46 | - Story of La Sa Ma mapper: |
| 11 | | - Does this display Nintendo or Gowin logo on boot? |
| 12 | | - No clue how the banking works yet |
| 47 | - This should display the Gowin logo on boot on both DMG and CGB (Not implemented yet) |
| 13 | 48 | - ATV Racing/Rocket Games mapper: |
| 14 | 49 | - How did this overlay the official Nintendo logo at BIOS check time? (Some Sachen titles use a similar trick) |
| 15 | 50 | |
| r18540 | r18541 | |
| 95 | 130 | |
| 96 | 131 | |
| 97 | 132 | static void gb_machine_stop(running_machine &machine); |
| 98 | | |
| 99 | | |
| 100 | | |
| 101 | | |
| 102 | | |
| 103 | | |
| 104 | | |
| 105 | | |
| 106 | | |
| 107 | | |
| 108 | | |
| 109 | | |
| 110 | | |
| 111 | | |
| 112 | | |
| 113 | | |
| 114 | | |
| 115 | | |
| 116 | | |
| 117 | | |
| 118 | | |
| 119 | | |
| 120 | | |
| 121 | 133 | static void gb_timer_increment( running_machine &machine ); |
| 122 | 134 | |
| 123 | 135 | #ifdef MAME_DEBUG |
| r18540 | r18541 | |
| 249 | 261 | //space.install_write_handler( 0x5000, 0x5003, write8_delegate(FUNC(gb_state::gb_rom_back_yongyong_5000),state) ); |
| 250 | 262 | break; |
| 251 | 263 | case MBC_LASAMA: |
| 264 | space.install_write_handler( 0x2080, 0x2080, write8_delegate(FUNC(gb_state::gb_rom_bank_lasama_2080),state) ); |
| 265 | space.install_write_handler( 0x6000, 0x6000, write8_delegate(FUNC(gb_state::gb_rom_bank_lasama_6000),state) ); |
| 252 | 266 | break; |
| 253 | 267 | case MBC_ATVRACIN: |
| 254 | 268 | space.install_write_handler( 0x3F00, 0x3F00, write8_delegate(FUNC(gb_state::gb_rom_bank_atvracin_3f00),state) ); |
| r18540 | r18541 | |
| 802 | 816 | gb_rom16_4000( machine(), m_ROMMap[m_ROMBank] ); |
| 803 | 817 | } |
| 804 | 818 | |
| 819 | WRITE8_MEMBER(gb_state::gb_rom_bank_lasama_2080) |
| 820 | { |
| 821 | // Actual banking? |
| 822 | m_ROMBank = m_ROMBank00 | ( data & 0x03 ); |
| 823 | gb_rom16_4000( machine(), m_ROMMap[m_ROMBank] ); |
| 824 | } |
| 825 | |
| 826 | WRITE8_MEMBER(gb_state::gb_rom_bank_lasama_6000) |
| 827 | { |
| 828 | // On boot the following two get written right after each other: |
| 829 | // 02 |
| 830 | // BE |
| 831 | // Disable logo switching? |
| 832 | if ( ! ( data & 0x80 ) ) |
| 833 | { |
| 834 | m_ROMBank00 = ( data & 0x02 ) << 1; |
| 835 | gb_rom16_0000( machine(), m_ROMMap[m_ROMBank00] ); |
| 836 | } |
| 837 | } |
| 838 | |
| 805 | 839 | WRITE8_MEMBER(gb_state::gb_rom_bank_atvracin_3f00) |
| 806 | 840 | { |
| 807 | 841 | if ( data == 0 ) |