Skip to content

Commit

Permalink
updates from over christmas break
Browse files Browse the repository at this point in the history
  • Loading branch information
freem committed Dec 26, 2014
1 parent 7bf6200 commit 4eb9973
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 17 deletions.
32 changes: 31 additions & 1 deletion doc/NeoRomFS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -90,4 +90,34 @@ offset content
: :

================================================================================
[NeoRomFS]
[NeoRomFS]
This section is currently a work in progress as well.

Cart version expects a linear database; CD version loads "non-standard" files.

<Header>
$00-$07 (str.) "NeoRomFS"
$08-$0B (long) size of data in filesystem (bytes)
$0C-$0F (long) ????

<Default Filesystem (Cart)>
/ Filesystem Root
mc/ [Device] Memory Card
bram/ ["Device"] MVS Backup RAM
pc2neo/ [Device] PC2Neo cable

<Default Filesystem (CD)>
/ Filesystem Root
mc/ [Device] Backup Memory
pc2neo/ [Device] PC2Neo cable


<Memory Card/Backup Memory>
NeoRomFS provides a soft layer over the memory card functions.
Data is written to the card using the original SNK file system.

<MVS Backup RAM>
Where available, NeoRomFS can provide a soft layer over the MVS Backup RAM.

<PC2Neo Cable>
(unsure if this should be handled by NeoRomFS or elsewhere)
29 changes: 29 additions & 0 deletions doc/attract_loop.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
Attract Loops
=============
Most arcade games have an attract sequence of some sort. USER_REQUEST Command 2
is used to tell the game to run the demo (or possibly even play the game, but
that's beyond the scope of this document).

Common attract loops typically include the following:
* Content Warning screen (if set to US mode or with a dipswitch [Euro])
* Introduction sequence
* Title screen
* Gameplay demonstration
* High Score screen
Not every Neo-Geo game released includes all of the above, but they're typically
found within the 273-odd game library. Content Warning screens were only added
to games around the late 1990s (starting with ???).

In order to have a "good" attract loop setup, you should have the following:
* A variable to note if you're in attract/demo mode or not
* A variable for the current position in the attract/demo sequence
* At least one timer, for timing the attract sequence (can be reused)
* Other timers, for events in the attract sequence

Multiple Intros
---------------
Garou: Mark of the Wolves does this, and in theory, it's pretty simple.
* MVS: read and update a value in the MVS Backup RAM.
* Home consoles: One of two options.
1) seed the initial value with a random number, then update that.
2) Don't care and just start with the first one.
File renamed without changes.
2 changes: 1 addition & 1 deletion doc/ipl.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Filename,Bank,Offset

newlines are CR+LF

So far, all IPL.TXT files end with an 0x1A byte.
So far, all known IPL.TXT files end with an 0x1A byte.

Last Blade 2's IPL.TXT has filenames in lowercase.

Expand Down
34 changes: 19 additions & 15 deletions src/inc/ram_bios.inc
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ BIOS_WORKRAM equ $10F300
; $10F688 "decremented each time a sector is read until it's 0" on CD systems

;===================================;
; $10FCEE ??
; $10FCEE "Z80/M ROM check pass", set by game

; $10FCF2 ??

;===================================;
Expand Down Expand Up @@ -117,21 +118,22 @@ BIOS_CREDIT3_DEC equ $10FDB2 ; (byte) Credit decrement Player 3 (BCD)
BIOS_CREDIT4_DEC equ $10FDB3 ; (byte) Credit decrement Player 4 (BCD)
;-----------------------------------;
BIOS_START_FLAG equ $10FDB4 ; (byte) Player(s) starting the game on PLAYER_START call
; $10FDB5??
BIOS_PLAYER1_MODE equ $10FDB6 ; (byte) Player 1 Status
;BIOS_?????????? equ $10FDB5 ; (byte) ?
;-----------------------------------;
; Status Values: 0=No play, 1=Playing, 2=Continue display, 3=Game Over
BIOS_PLAYER1_MODE equ $10FDB6 ; (byte) Player 1 Status (a.k.a. "BIOS_PLAYER_MOD1")
BIOS_PLAYER2_MODE equ $10FDB7 ; (byte) Player 2 Status
BIOS_PLAYER3_MODE equ $10FDB8 ; (byte) Player 3 Status
BIOS_PLAYER4_MODE equ $10FDB9 ; (byte) Player 4 Status
; Status Values: 0=No play, 1=Playing, 2=Continue display, 3=Game Over
;-----------------------------------;
;??? equ $10FDBA ; (long)
BIOS_MESS_POINT equ $10FDBE ; (long) pointer to buffer
BIOS_MESS_POINT equ $10FDBE ; (long) pointer to MESS_OUT buffer
BIOS_MESS_BUSY equ $10FDC2 ; (word) 0=run MESS_OUT, 1=skip MESS_OUT
;-----------------------------------;
BIOS_CARD_COMMAND equ $10FDC4 ; (byte) Command to execute
BIOS_CARD_MODE equ $10FDC5 ; (byte) "command error job mode"
BIOS_CARD_ANSWER equ $10FDC6 ; (byte) answer code for command; set by BIOS
; $10FDC7??
;BIOS_?????????? equ $10FDC7 ; (byte) ?
BIOS_CARD_START equ $10FDC8 ; (long) Pointer to start of card data
BIOS_CARD_SIZE equ $10FDCC ; (word) Size of data
BIOS_CARD_FCB equ $10FDCE ; (word) Game NGH number
Expand All @@ -146,7 +148,7 @@ BIOS_HOUR equ $10FDD6 ; (byte)
BIOS_MINUTE equ $10FDD7 ; (byte)
BIOS_SECOND equ $10FDD8 ; (byte)
;-----------------------------------;
BIOS_SELECT_TIMER equ $10FDDA ; (byte?) "BIOS_COMPULSION_TIMER"
BIOS_SELECT_TIMER equ $10FDDA ; (byte?) (a.k.a. "BIOS_COMPULSION_TIMER")
;BIOS_START_TEST equ $10FDDC ; ()
;BIOS_COIN_LEVER equ $10FDDE ; ()

Expand Down Expand Up @@ -195,7 +197,7 @@ BIOS_WORK2 equ $10FE80

BIOS_DEVMODE equ $10FE80 ; (byte)
;$10FE81-$10FE87 "Power on ID code"??
BIOS_FRAMECOUNT equ $10FE88 ; (long) "SYS_INT1_TIMER"
BIOS_FRAMECOUNT equ $10FE88 ; (long) (a.k.a. "SYS_INT1_TIMER")
BIOS_SYS_STOPPER equ $10FE8C ; (byte) "system stopper", actually BIOS VBlank flag
BIOS_Z80_BANK equ $10FE8D ; (byte)
BIOS_SYSTEM_MODE2 equ $10FE8E ; (word)
Expand Down Expand Up @@ -223,16 +225,16 @@ BIOS_MESS_STACK equ $10FEC6 ; (long) 5 longs
;-----------------------------------;
; $10FEDA and $10FEDB are used on CD systems; see below.
;-----------------------------------;
BIOS_STATCURNT_RAW equ $10FEDC ; (byte) "INPUT_SS"; raw version of BIOS_STATCURNT (includes Select on MVS)
BIOS_STATCURNT_RAW equ $10FEDC ; (byte) raw version of BIOS_STATCURNT (includes Select on MVS) (a.k.a. "INPUT_SS")
BIOS_STATCHANGE_RAW equ $10FEDD ; (byte) raw version of BIOS_STATCHANGE (includes Select on MVS)
BIOS_INPUT_TT1 equ $10FEDE ; (byte)
BIOS_INPUT_TT2 equ $10FEDF ; (byte)

BIOS_KYOUSEI_MODE equ $10FEE0 ; (byte) "KYOUSEI_MODE" (Game start compulsion?)
BIOS_SYS_STOP equ $10FEE1 ; (byte) "BIOS_FRAME_SKIP","SYS_STOP"
BIOS_CS_REMAIN equ $10FEE2 ; (byte) "CS_REMAIN"
BIOS_INT_OFF equ $10FEE3 ; (byte) "BIOS_INT1_SKIP", "INT_OFF"
BIOS_INT1_TIMER2 equ $10FEE4 ; (word) "BIOS_INT1_FRAME_COUNTER", "INT1_TIMER2"
BIOS_KYOUSEI_MODE equ $10FEE0 ; (byte) a.k.a. "KYOUSEI_MODE" (Game start compulsion?)
BIOS_SYS_STOP equ $10FEE1 ; (byte) (a.k.a. "BIOS_FRAME_SKIP","SYS_STOP")
BIOS_CS_REMAIN equ $10FEE2 ; (byte) (a.k.a. "CS_REMAIN")
BIOS_INT_OFF equ $10FEE3 ; (byte) (a.k.a. "BIOS_INT1_SKIP", "INT_OFF")
BIOS_INT1_TIMER2 equ $10FEE4 ; (word) (a.k.a. "BIOS_INT1_FRAME_COUNTER", "INT1_TIMER2")
;-----------------------------------;
;INPUT_5
BIOS_P5STATUS equ $10FEE8 ; (byte) Input 5 status
Expand Down Expand Up @@ -262,10 +264,12 @@ BIOS_4P_PLUGGED equ $10FEFB ; (bios) Is board present? (0=not found; $FF=plugg
;==============================================================================;
; [CD system-specific]

; $10FDDC on NeoCD top 3-2: 1=Load file with animation, 0=No animation

; $10FDE2 (at least CDZ)

; DRAM Uploading
BIOS_CD_UPZONE equ $10FEDA ; (byte) zone (0=PRG/TXT, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT, 7=OBJ, 8=A**)
BIOS_CD_UPZONE equ $10FEDA ; (byte) zone (0=PRG/TXT, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT, 6=???, 7=OBJ, 8=A**)
BIOS_CD_UPBANK equ $10FEDB ; (byte) bank
BIOS_CD_UPDEST equ $10FEF4 ; (long) destination address
BIOS_CD_UPSRC equ $10FEF8 ; (long) source address
Expand Down

0 comments on commit 4eb9973

Please sign in to comment.