BIOS RAM locations

From NeoGeo Development Wiki
Jump to navigation Jump to search

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

$10FEE3 BIOS_INT1_SKIP byte BIOS Only used in SYSTEM_INT1, if set to 0 it will call MESS_OUT and SYSTEM_IO.
$10FEE4 BIOS_INT1_FRAME_COUNTER byte BIOS Frame counter, only used in SYSTEM_INT1

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