src/mess/drivers/gba.c
| r9161 | r9162 | |
| 2115 | 2115 | |
| 2116 | 2116 | rv = 0; |
| 2117 | 2117 | offset &= state->flash_mask; |
| 2118 | | if (mem_mask & 0xff) rv |= intelflash_read(0, offset*4); |
| 2119 | | if (mem_mask & 0xff00) rv |= intelflash_read(0, (offset*4)+1)<<8; |
| 2120 | | if (mem_mask & 0xff0000) rv |= intelflash_read(0, (offset*4)+2)<<16; |
| 2121 | | if (mem_mask & 0xff000000) rv |= intelflash_read(0, (offset*4)+3)<<24; |
| 2118 | if (mem_mask & 0xff) rv |= state->mFlashDev->read(offset*4); |
| 2119 | if (mem_mask & 0xff00) rv |= state->mFlashDev->read((offset*4)+1)<<8; |
| 2120 | if (mem_mask & 0xff0000) rv |= state->mFlashDev->read((offset*4)+2)<<16; |
| 2121 | if (mem_mask & 0xff000000) rv |= state->mFlashDev->read((offset*4)+3)<<24; |
| 2122 | 2122 | |
| 2123 | 2123 | return rv; |
| 2124 | 2124 | } |
| r9161 | r9162 | |
| 2131 | 2131 | switch (mem_mask) |
| 2132 | 2132 | { |
| 2133 | 2133 | case 0xff: |
| 2134 | | intelflash_write(0, offset*4, data&0xff); |
| 2134 | state->mFlashDev->write(offset*4, data&0xff); |
| 2135 | 2135 | break; |
| 2136 | 2136 | case 0xff00: |
| 2137 | | intelflash_write(0, (offset*4)+1, (data>>8)&0xff); |
| 2137 | state->mFlashDev->write((offset*4)+1, (data>>8)&0xff); |
| 2138 | 2138 | break; |
| 2139 | 2139 | case 0xff0000: |
| 2140 | | intelflash_write(0, (offset*4)+2, (data>>16)&0xff); |
| 2140 | state->mFlashDev->write((offset*4)+2, (data>>16)&0xff); |
| 2141 | 2141 | break; |
| 2142 | 2142 | case 0xff000000: |
| 2143 | | intelflash_write(0, (offset*4)+3, (data>>24)&0xff); |
| 2143 | state->mFlashDev->write((offset*4)+3, (data>>24)&0xff); |
| 2144 | 2144 | break; |
| 2145 | 2145 | default: |
| 2146 | 2146 | fatalerror("Unknown mem_mask for GBA flash_w %x\n", mem_mask); |
| r9161 | r9162 | |
| 2344 | 2344 | } |
| 2345 | 2345 | else if (!memcmp(&ROM[i], "FLASH1M_", 8)) |
| 2346 | 2346 | { |
| 2347 | | state->nvptr = (UINT8 *)&state->gba_flash; |
| 2348 | | state->nvsize = 0x20000; |
| 2347 | state->nvptr = NULL; |
| 2348 | state->nvsize = 0; |
| 2349 | 2349 | state->flash_size = 0x20000; |
| 2350 | 2350 | state->flash_mask = 0x1ffff/4; |
| 2351 | 2351 | |
| r9161 | r9162 | |
| 2355 | 2355 | } |
| 2356 | 2356 | else if (!memcmp(&ROM[i], "FLASH", 5)) |
| 2357 | 2357 | { |
| 2358 | | state->nvptr = (UINT8 *)&state->gba_flash; |
| 2359 | | state->nvsize = 0x10000; |
| 2358 | state->nvptr = NULL; |
| 2359 | state->nvsize = 0; |
| 2360 | 2360 | state->flash_size = 0x10000; |
| 2361 | 2361 | state->flash_mask = 0xffff/4; |
| 2362 | 2362 | |
| r9161 | r9162 | |
| 2388 | 2388 | { |
| 2389 | 2389 | if (state->flash_size == 0x10000) |
| 2390 | 2390 | { |
| 2391 | | intelflash_init(image.device().machine, 0, FLASH_PANASONIC_MN63F805MNP, &state->gba_flash); |
| 2391 | state->mFlashDev = image.device().machine->device<intelfsh8_device>("pflash"); |
| 2392 | 2392 | } |
| 2393 | 2393 | else |
| 2394 | 2394 | { |
| 2395 | | intelflash_init(image.device().machine, 0, FLASH_SANYO_LE26FV10N1TS, &state->gba_flash); |
| 2395 | state->mFlashDev = image.device().machine->device<intelfsh8_device>("sflash"); |
| 2396 | 2396 | } |
| 2397 | 2397 | } |
| 2398 | 2398 | |
| r9161 | r9162 | |
| 2447 | 2447 | MDRV_SOUND_ADD("direct_b_right", DAC, 0) // GBA direct sound B right |
| 2448 | 2448 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "spkright", 0.50) |
| 2449 | 2449 | |
| 2450 | MDRV_PANASONIC_MN63F805MNP_ADD("pflash") |
| 2451 | MDRV_SANYO_LE26FV10N1TS_ADD("sflash") |
| 2452 | |
| 2450 | 2453 | MDRV_CARTSLOT_ADD("cart") |
| 2451 | 2454 | MDRV_CARTSLOT_EXTENSION_LIST("gba,bin") |
| 2452 | 2455 | MDRV_CARTSLOT_INTERFACE("gba_cart") |