BIOS RAM locations
Game Related
Address | DEF name | Size | Set by | Description |
$10FD84~$10FD93 | BIOS_GAME_DIP | 16 bytes | BIOS | Software DIPs values |
$10FDAE | BIOS_USER_REQUEST | byte | BIOS | Request for the USER subroutine. 0:Init, 1:Boot animation, 2:Demo, 3:Title |
$10FDAF | BIOS_USER_MODE | byte | BIOS/Game | Used by the game to tell what it's doing: 0:Init/Boot animation, 1:Title/Demo, 2:Game
Game selection can only be done on MVS systems when this byte is < 2 |
$10FDB0 | BIOS_CREDIT_DEC | 4 bytes | Game | Credit decrement value for each player when calling CREDIT DOWN. |
$10FDB4 | BIOS_START_FLAG | byte | BIOS | Used when calling the PLAYER START subroutine. Last 4 bits correspond to the player who pushed start. |
$10FDB6 | BIOS_PLAYER_MOD | 4 bytes | Game | Sets player status. 0:Never played, 1:Playing, 2:Continue option being displayed, 3:Game over |
System Related
Address | DEF name | Size | Set by | Description |
$10FD80 | BIOS_SYSTEM_MODE | byte | BIOS | 0:BIOS wants vblank (system mode), $80:ok to use vblank (game mode) |
$10FD82 | BIOS_MVS_FLAG | byte | BIOS | 0:AES, 1:MVS |
$10FD83 | BIOS_COUNTRY_CODE | byte | BIOS | 0:Japan, 1:USA, 2:Europe |
$10FE80 | BIOS_DEVMODE | byte | BIOS/GAME | 0 : Normal mode, 1 : Developer mode |
Joypad Related
Updated by SYSTEM_IO
Address | DEF name | Size | Set by | Description |
$10FD94 | BIOS_P1STATUS | byte | BIOS | 0:No connection, 1:Normal joypad, 2:Expanded joypad, 3:Mahjong controller, 4:Keyboard |
$10FD95 | BIOS_P1PREVIOUS | byte | BIOS | Previous frame DCBA Right Left Bottom Top (positive logic) |
$10FD96 | BIOS_P1CURRENT | byte | BIOS | Current frame DCBA Right Left Bottom Top (positive logic) |
$10FD97 | BIOS_P1CHANGE | byte | BIOS | Active edge DCBA Right Left Bottom Top (positive logic) |
$10FD98 | BIOS_P1REPEAT | byte | BIOS | Active edge + repeat every 8 frames after 16 frames. DCBA Right Left Bottom Top (positive logic) |
$10FD99 | BIOS_P1TIMER | byte | BIOS | Countdown ? |
$10FD9A~$10FD9F | Same for P2 | 5 bytes | BIOS | See above |
$10FDA0~$10FDA6 | Same for P3 | 5 bytes | BIOS | See above |
$10FDA7~$10FDAB | Same for P4 | 5 bytes | BIOS | See above |
$10FDAC | BIOS_STATCURNT | byte | BIOS | Select P4, Start P4, Select P3, Start P3, Select P2, Start P2, Select P1, Start P1 (positive logic)
On MVS system the select bits are 0 |
$10FDAD | BIOS_STATCHANGE | byte | BIOS | Select P4, Start P4, Select P3, Start P3, Select P2, Start P2, Select P1, Start P1 (positive logic)
On MVS system the select bits are 0 |
$10FEDC | BIOS_STATCURNT_RAW | byte | BIOS | Select P4, Start P4, Select P3, Start P3, Select P2, Start P2, Select P1, Start P1 (positive logic) |
$10FEDD | BIOS_STATCHANGE_RAW | byte | BIOS | Select P4, Start P4, Select P3, Start P3, Select P2, Start P2, Select P1, Start P1 (positive logic) |
Memory Card Related
See CARD for more explanation on those variables.
Address | DEF name | Size | Set by | Description |
$10FDC4 | BIOS_CARD_COMMAND | byte | BIOS or Game | Command to execute, |
$10FDC6 | BIOS_CARD_ANSWER | byte | BIOS | Answer code for the command |
$10FDC8 | BIOS_CARD_START | longword | BIOS or Game | Pointer to data |
$10FDCC | BIOS_CARD_SIZE | word | BIOS or Game | Size of data |
$10FDCE | BIOS_CARD_FCB | word | BIOS or Game | Game NGH number |
$10FDD0 | BIOS_CARD_SUB | byte or word | BIOS or Game | Game Subnumber |
MESS OUT Related
See MESS_OUT to know how to use this routine.
Address | DEF name | Size | Set by | Description |
$10FDBE | BIOS_MESS_POINT | longword | Game | buffer pointer |
$10FDC2 | BIOS_MESS_BUSY | byte | Game | 0:Allow MESS_OUT, 1:Skip MESS_OUT |
Calendar Related
Those value are updated when READ_CALENDAR is called
Address | DEF name | Size | Set by | Description |
$10FDD2 | BIOS_YEAR | byte | BIOS | Current year |
$10FDD3 | BIOS_MONTH | byte | BIOS | Current month |
$10FDD4 | BIOS_DAY | byte | BIOS | Current day |
$10FDD5 | BIOS_WEEKDAY | byte | BIOS | Current weekday (Sunday = 00, Monday = 01 ... Saturday = 06) |
$10FDD6 | BIOS_HOUR | byte | BIOS | Current hour (24h format) |
$10FDD7 | BIOS_MINUTE | byte | BIOS | Current minute |
$10FDD8 | BIOS_SECOND | byte | BIOS | Current minute |
BIOS internal
Address | DEF name | Size | Set by | Description |
$10FCEF | BIOS_SLOTCHECK | byte | BIOS | Slot check passed if non-zero |
$10FD00~10FD1F | GAME_LIST | 32 bytes | BIOS | Game list (NGHID.w $XXXX) |
$10FD00~10FD1F | GAME_LIST_DATE | 32 bytes | BIOS | Game list date creation (YYMMDDdd) |
$10FDDA | BIOS_COMPULSION_TIMER | byte | BIOS | Timer for the game compulsion start feature, in seconds. |
$10FDDB | BIOS_COMPULSION_FRAME_TIMER | byte | BIOS | Frame based timer for the game compulsion start feature.
When reach 0, timer is reseted to $3B and START_COMPULSION_TIMER is decremented. |
$10FE88 | BIOS_FRAME_COUNTER | longword | BIOS | Frame counter, updated by SYSTEM_IO |
$10FEBF | BIOS_BRAM_USED | byte | BIOS | 0 : BRAM not currently used, 1 : Currently used |
$10FEE1 | BIOS_FRAME_SKIP | byte | BIOS | Number of frame to skip the routine which check the demo_end or if the player have pressed start
Decremented in SYSTEM_IO |
$10FEE4 | byte | BIOS | Frame counter |
Other
Address | DEF name | Size | Set by | Description |
$10FCEE | ? | byte | GAME | Z80/M ROM check pass |
*BIOS_SELECT_TIMER equ $10FDDA ;Byte: game start countdown ; Upload to DRAM *BIOS_UPDEST equ $10FEF4 ;longword: destination address (!) *BIOS_UPSRC equ $10FEF8 ;longword: source address *BIOS_UPSIZE equ $10FEFC ;longword: size *BIOS_UPZONE equ $10FEDA ;byte: zone (0=PRG, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT) *BIOS_UPBANK equ $10FEDB ;byte: bank