If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working at any time.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Balloon Fight (NES)/ROM map
Jump to navigation
Jump to search
The following article is a ROM map for Balloon Fight (NES).
NMI
The NMI handler runs every vertical blank in response to NMI. The pseudocode looks like this:
nmi = $C08A
push a, x, y
OAMADDR = 0
OAM_DMA = >OAM
if [$52] != [$53]:
call $C172
call updateStars
call updateStatusBar
retraces += 1
PPUADDR = $2000
PPUSCROLL = (0, 0)
call $FFF7
vblanked = $01
if [$16] != 0:
spinwait for vblank on PPUSTATUS=0 -- Nesticle code!
x = 4
y = $C6
spinwait x*1284+y*5-1 cycles
PPUCTRL = [$18] | [$00]
PPUSCROLL = ([$17], 0)
pull y, x, a
return
updateStatusBar = $D78E
y = [$46] - 1
if y != 0:
if y < 128:
tailcall $D7FB
return
PPUADDR = $2043
to PPUDATA write:
$8E, [$07] through [$03], $00, $24, 24,
$8C, $8D, [$11] through [$0D], $00, $24, 24
if [$16] != 0:
tailcall writeRank
if [$40] != 0:
to PPUDATA write:
$8F, [$0C] through [$0A], 0
[$46] -= 1
return
updateLives = $D7FB
writeGameOver = $D831
writeRank:
to PPUDATA write $F7, $F8, $F9, $FA, $FB, [$4A], [$49]
-- this text is "RANK-"
[$46] -= 1
return
updateStars = $D603
if [$4C] == 0:
return
[$4C] -= 1
[$4F] = X = ([$4F] + 2) & $3F
call writeOneStar
PPUADDR = ([$51], [$50])
a = PPUDATA
a = PPUDATA
for y in 3 to 0:
if a == $D642[y]:
tailcall $D631
return
writeOneStar:
PPUADDR = ([$51], [$50])
PPUDATA = $D643[y]
return
$FFF7:
tailcall $F758
$F758:
JOY2 = $C0
call $FB25
call $F90A
call $FA38
call $FAAC
call $F824
[$06E9] = [$F1]
[$F0] = [$F1] = [$F2] = [$F3] = 0
return
Physics
Code to handle physics starts at $EB84
; these two update the X and Y coordinates by adding the velocity to the position. updateActorX = $EB84 updateActorY = $EB96 ; these two call $F0AA before and after calling updateActorX, updateActorY ; the function of $F0AA is still not known updateActorXWithF0AA = $EBA8 updateActorYWithF0AA = $EBB1
Internal Data for Balloon Fight (NES)
| |
|---|---|