summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-04-01 13:50:56 -0700
committerGitHub <noreply@github.com>2017-04-01 13:50:56 -0700
commit824902b40b71852c51191ec1e1ec14941ecb5063 (patch)
tree7daf6510c000fda53ba46e727a62c4dd85efe013
parent23a462511307ce7461d490a892926c60d0851a2e (diff)
parentbbc5294685ffa4b93442f7e6aeb095900c35868c (diff)
Merge pull request #9 from PikalaxALT/master
Function labels and data dism related to physics
-rwxr-xr-xaudio/engine_0f.asm39
-rwxr-xr-xhome.asm210
-rwxr-xr-xhome/text.asm5
-rwxr-xr-xhram.asm7
-rwxr-xr-xmacros.asm6
-rwxr-xr-xmain.asm416
-rwxr-xr-xwram.asm88
7 files changed, 337 insertions, 434 deletions
diff --git a/audio/engine_0f.asm b/audio/engine_0f.asm
index 16b293a..d782bb0 100755
--- a/audio/engine_0f.asm
+++ b/audio/engine_0f.asm
@@ -4,8 +4,8 @@ Func_3c000: ; 0x3c000
push bc
push af
call Func_3cb1b
- ld hl, wdd01
- ld de, wdeb0 - wdd01
+ ld hl, wChannel1
+ ld de, wdeb0 - wChannel1
.clearLoop
xor a
ld [hli], a
@@ -21,7 +21,7 @@ Func_3c000: ; 0x3c000
ld [hli], a
ld hl, rNR10
ld e, $4
-.asm_3c022
+.loop
xor a
ld [hli], a
ld [hli], a
@@ -32,7 +32,7 @@ Func_3c000: ; 0x3c000
ld a, $80
ld [hli], a
dec e
- jr nz, .asm_3c022
+ jr nz, .loop
ld a, $8
ld [wde9a], a
ld a, $77
@@ -256,7 +256,7 @@ Func_3c180: ; 0x3c180
xor a
ld [wde97], a
ld [wde99], a
- ld bc, wdd01
+ ld bc, wChannel1
.asm_3c18f
ld hl, $0002
add hl, bc
@@ -306,16 +306,16 @@ Func_3c180: ; 0x3c180
ld a, [wde97]
cp $4
jr nc, .asm_3c219
- ld hl, wddcb
+ ld hl, wChannel5 + 2
bit 0, [hl]
jr nz, .asm_3c204
- ld hl, wddfd
+ ld hl, wChannel6 + 2
bit 0, [hl]
jr nz, .asm_3c204
- ld hl, wde2f
+ ld hl, wChannel7 + 2
bit 0, [hl]
jr nz, .asm_3c204
- ld hl, wde61
+ ld hl, wChannel8 + 2
bit 0, [hl]
jr z, .asm_3c20a
.asm_3c204
@@ -1140,10 +1140,10 @@ Func_3c704: ; 0x3c704
cp $4
ret nz
xor a
- ld hl, wde21
+ ld hl, wChannel6 + $26
ld [hli], a
ld [hl], a
- ld hl, wde85
+ ld hl, wChannel8 + $26
ld [hli], a
ld [hl], a
ld a, [wdeac]
@@ -1619,6 +1619,7 @@ Func_3c9da: ; 0x3c9da
Func_3c9e9: ; 0x3c9e9
call Func_3ca10
+ ; cast to s16
ld e, a
cp $80
jr nc, .asm_3c9f5
@@ -1754,24 +1755,24 @@ Func_3ca95: ; 0x3ca95
ld a, [wde97]
cp $4
jr nc, .asm_3cab7
- ld bc, wdd01
+ ld bc, wChannel1
call Func_3cad1
- ld bc, wdd33
+ ld bc, wChannel2
call Func_3cad1
- ld bc, wdd65
+ ld bc, wChannel3
call Func_3cad1
- ld bc, wdd97
+ ld bc, wChannel4
call Func_3cad1
jr .asm_3cacf
.asm_3cab7
- ld bc, wddc9
+ ld bc, wChannel5
call Func_3cad1
- ld bc, wddfb
+ ld bc, wChannel6
call Func_3cad1
- ld bc, wde2d
+ ld bc, wChannel7
call Func_3cad1
- ld bc, wde5f
+ ld bc, wChannel8
call Func_3cad1
.asm_3cacf
pop bc
diff --git a/home.asm b/home.asm
index 2444529..1b7567e 100755
--- a/home.asm
+++ b/home.asm
@@ -92,7 +92,7 @@ Start: ; 0x150
ld [MBC5RomBankOn], a ; Enable RAM Banking Mode
ld a, $0
ld [MBC5SRamBank], a ; Load RAM Bank $0
- ld sp, wdfff ; Initialize stack pointer to the end of WRAM Bank $1
+ ld sp, wStack ; Initialize stack pointer to the end of WRAM Bank $1
ld hl, hPushOAM
ld bc, $007e
call ClearData ; Clear High RAM (HRAM)
@@ -194,7 +194,7 @@ SoftReset:
ld [MBC5RomBankOn], a
ld a, $0
ld [MBC5SRamBank], a
- ld sp, wdfff
+ ld sp, wStack
call WriteDMACodeToHRAM
call ClearOAMBuffer
xor a
@@ -222,7 +222,7 @@ SoftReset:
ld a, $0
ld [wd849], a
ld [wd84a], a
- ld a, $f
+ ld a, BANK(Func_3c000)
call SetSongBank
ld a, [hSGBFlag]
and a
@@ -538,9 +538,9 @@ PlaySong: ; 0x490
ld [hLoadedROMBank], a
ld [MBC5RomBank], a
ld a, e
- ld [wd7bf], a
+ ld [wStageSong], a
ld a, [wCurrentSongBank]
- ld [wd7c0], a
+ ld [wStageSongBank], a
call PlaySong_BankF ; this function is replicated in multiple banks.
pop af
ld [hLoadedROMBank], a
@@ -577,10 +577,10 @@ Func_4d8: ; 0x4d8
push bc
push de
push hl
- ld a, [wddcb]
- ld hl, wddfd
+ ld a, [wChannel5 + 2]
+ ld hl, wChannel6 + 2
or [hl]
- ld hl, wde2f
+ ld hl, wChannel7 + 2
or [hl]
and $1
call z, PlaySoundEffect
@@ -717,7 +717,7 @@ Func_597: ; 0x597
inc de
ld b, $8
.asm_5a0
- ld a, [wd80c]
+ ld a, [wBGP]
call Func_5c2
dec b
jr nz, .asm_5a0
@@ -727,9 +727,9 @@ Func_597: ; 0x597
inc de
ld b, $4
.asm_5b2
- ld a, [wd80d]
+ ld a, [wOBP0]
call Func_5c2
- ld a, [wd80e]
+ ld a, [wOBP1]
call Func_5c2
dec b
jr nz, .asm_5b2
@@ -1803,7 +1803,7 @@ Func_bbe: ; 0xbbe
and a
jp nz, Func_c19
ld hl, hBGP
- ld de, wd80c
+ ld de, wBGP
ld b, $3
.asm_bcc
ld a, [de]
@@ -1820,7 +1820,7 @@ Func_bbe: ; 0xbbe
ld bc, $0002
call AdvanceFrames
ld hl, hBGP
- ld de, wd80c
+ ld de, wBGP
ld b, $3
.asm_be9
ld a, [de]
@@ -1834,7 +1834,7 @@ Func_bbe: ; 0xbbe
ld bc, $0002
call AdvanceFrames
ld hl, hBGP
- ld de, wd80c
+ ld de, wBGP
ld b, $3
.asm_c02
ld a, [de]
@@ -4004,16 +4004,19 @@ Func_208c: ; 0x208c
scf
ret
-Func_20ab: ; 0x20ab
+MultiplyBbyCUnsigned: ; 0x20ab
+ ; u16 bc = (u8)b * (u8)c
push af
xor a
- ld [$ffb6], a
- jr .asm_20c6
+ ld [hSignedMathSignBuffer], a
+ jr asm_20c6
+MultiplyBbyCSigned:
+ ; s16 bc = (s8)b * (s8)c
push af
ld a, b
xor c
- ld [$ffb6], a
+ ld [hSignedMathSignBuffer], a
bit 7, b
jr z, .asm_20be
ld a, b
@@ -4022,24 +4025,26 @@ Func_20ab: ; 0x20ab
ld b, a
.asm_20be
bit 7, c
- jr z, .asm_20c6
+ jr z, asm_20c6
ld a, c
cpl
inc a
ld c, a
-.asm_20c6
+asm_20c6
+ ; b*c == (b**2 + c**2 - (b - c)**2) / 2
push de
push hl
ld a, b
cp c
- jr nc, .asm_20ce
+ jr nc, .c_le_b
ld b, c
ld c, a
-.asm_20ce
- ld h, $3e
+.c_le_b
+ ; hl = b**2 + c**2
+ ld h, SquaresLow / $100
ld l, c
ld e, [hl]
- inc h
+ inc h ; SquaresHigh / $100
ld d, [hl]
ld l, b
ld a, [hl]
@@ -4048,13 +4053,14 @@ Func_20ab: ; 0x20ab
ld h, a
add hl, de
push af
- ld d, $3e
+ ; hl -= (b - c) ** 2
+ ld d, SquaresLow / $100
ld a, b
sub c
ld e, a
ld a, [de]
ld c, a
- inc d
+ inc d ; SquaresHigh / $100
ld a, [de]
ld b, a
ld a, l
@@ -4063,21 +4069,22 @@ Func_20ab: ; 0x20ab
ld a, h
sbc b
ld h, a
- jr nc, .asm_20f1
+ jr nc, .no_carry
pop af
ccf
- jr .asm_20f2
+ jr .check_sign
-.asm_20f1
+.no_carry
pop af
-.asm_20f2
+.check_sign
+ ; hl /= 2
rr h
rr l
ld b, h
ld c, l
- ld a, [$ffb6]
+ ld a, [hSignedMathSignBuffer]
rlca
- jr nc, .asm_2107
+ jr nc, .done
ld a, c
cpl
add $1
@@ -4086,20 +4093,22 @@ Func_20ab: ; 0x20ab
cpl
adc $0
ld b, a
-.asm_2107
+.done
pop hl
pop de
pop af
ret
-Func_210b: ; 0x210b
+MultiplyBCByEAndRoundToMostSignificantShort: ; 0x210b
+; bc = round(bc * e / 256)
+; b^d = sign of output
push af
push hl
ld a, b
xor d
- ld [$ffb7], a
+ ld [hSignedMathSignBuffer2], a
bit 7, b
- jr z, .asm_211f
+ jr z, .positive1
ld a, c
cpl
add $1
@@ -4108,10 +4117,10 @@ Func_210b: ; 0x210b
cpl
adc $0
ld b, a
-.asm_211f
+.positive1
push bc
ld b, e
- call Func_20ab
+ call MultiplyBbyCUnsigned
ld l, c
ld h, b
ld bc, $0080
@@ -4120,11 +4129,11 @@ Func_210b: ; 0x210b
ld h, $0
pop bc
ld c, e
- call Func_20ab
+ call MultiplyBbyCUnsigned
add hl, bc
- ld a, [$ffb7]
+ ld a, [hSignedMathSignBuffer2]
rlca
- jr nc, .asm_2142
+ jr nc, .positive2
ld a, l
cpl
add $1
@@ -4133,33 +4142,35 @@ Func_210b: ; 0x210b
cpl
adc $0
ld h, a
-.asm_2142
+.positive2
ld c, l
ld b, h
pop hl
pop af
ret
-Func_2147: ; 0x2147
+Cosine: ; 0x2147
+ ; cos(a)
add $40
; fall through
-Func_2149: ; 0x2149
+Sine: ; 0x2149
+ ; sin(a)
push hl
- ld [$ffb6], a
+ ld [hSignedMathSignBuffer], a
and $7f
cp $40
- jr c, .asm_2155
+ jr c, .positive
cpl
- add $81
-.asm_2155
- ld hl, Data_26be
+ add $80+1
+.positive
+ ld hl, SineTable
ld e, a
ld d, $0
add hl, de
ld e, [hl]
pop hl
ld d, $0
- ld a, [$ffb6]
+ ld a, [hSignedMathSignBuffer]
sla a
ret nc
ld d, $ff
@@ -4253,51 +4264,53 @@ AddVelocityToPosition: ; 0x21c3
ld [hl], a
ret
-Func_21e5: ; 0x21e5
+NegateAngleAndApplyCollisionForce: ; 0x21e5
cpl
inc a
; fall through
-Func_21e7: ; 0x21e7
+ApplyCollisionForce: ; 0x21e7
push hl
+ ; bc_ret = bc * cos(a) + de * sin(x)
+ ; de_ret = bc * cos(a) - de * sin(x)
push bc
push de
- ld [$ff8c], a
- call Func_2147
+ ld [hSineOrCosineArgumentBuffer], a
+ call Cosine
ld a, e
- ld [$ff8d], a
+ ld [hCosineResultBuffer], a
ld a, d
- ld [$ff8e], a
- call Func_210b
+ ld [hCosineResultBuffer + 1], a
+ call MultiplyBCByEAndRoundToMostSignificantShort
ld l, c
ld h, b
pop bc
push bc
- ld a, [$ff8c]
- call Func_2149
+ ld a, [hSineOrCosineArgumentBuffer]
+ call Sine
ld a, e
- ld [$ff8f], a
+ ld [hSineResultBuffer], a
ld a, d
- ld [$ff90], a
- call Func_210b
+ ld [hSineResultBuffer + 1], a
+ call MultiplyBCByEAndRoundToMostSignificantShort
add hl, bc
pop de
pop bc
push hl
push de
- ld a, [$ff8f]
+ ld a, [hSineResultBuffer]
ld e, a
- ld a, [$ff90]
+ ld a, [hSineResultBuffer + 1]
cpl
ld d, a
- call Func_210b
+ call MultiplyBCByEAndRoundToMostSignificantShort
ld l, c
ld h, b
pop bc
- ld a, [$ff8d]
+ ld a, [hCosineResultBuffer]
ld e, a
- ld a, [$ff8e]
+ ld a, [hCosineResultBuffer + 1]
ld d, a
- call Func_210b
+ call MultiplyBCByEAndRoundToMostSignificantShort
add hl, bc
ld d, h
ld e, l
@@ -4305,7 +4318,7 @@ Func_21e7: ; 0x21e7
pop hl
ret
-Func_222b: ; 0x222b
+ApplyTorque: ; 0x222b
push hl
ld hl, wd7f8
ld [hl], $ff
@@ -4410,7 +4423,7 @@ SetBallVelocity: ; 0x22a7
pop hl
ret
-Func_22b5: ; 0x22b5
+CheckObjectCollision: ; 0x22b5
ld a, [wBallXPos + 1]
sub $4
push af
@@ -4439,9 +4452,9 @@ Func_22b5: ; 0x22b5
ld b, $0
add hl, bc
ld a, l
- ld [wd7f3], a
+ ld [wBallPositionPointerOffsetFromStageTopLeft], a
ld a, h
- ld [wd7f4], a
+ ld [wBallPositionPointerOffsetFromStageTopLeft + 1], a
ld a, [wStageCollisionMapPointer]
ld c, a
ld a, [wStageCollisionMapPointer + 1]
@@ -4622,19 +4635,19 @@ Func_22b5: ; 0x22b5
ret z
ld a, [hLoadedROMBank]
push af
- ld a, Bank(Data_8817)
+ ld a, Bank(CollisionForceAngles)
ld [hLoadedROMBank], a
ld [MBC5RomBank], a
push de
ld e, d
ld d, $0
- ld hl, Data_8817
+ ld hl, CollisionForceAngles
add hl, de
ld a, [hl]
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
sla e
rl d
- ld hl, Data_8917
+ ld hl, CollisionYDeltas
add hl, de
ld a, [wBallYPos]
add [hl]
@@ -4643,7 +4656,7 @@ Func_22b5: ; 0x22b5
ld a, [wBallYPos + 1]
adc [hl]
ld [wBallYPos + 1], a
- ld hl, Data_8b17
+ ld hl, CollisionXDeltas
add hl, de
ld a, [wBallXPos]
add [hl]
@@ -4672,7 +4685,7 @@ Func_22b5: ; 0x22b5
and $1e
ld c, a
ld b, $0
- ld hl, Data_250e
+ ld hl, SubTileBallPosDeltas
add hl, bc
ld a, [wSubTileBallXPos]
add $4
@@ -4694,12 +4707,12 @@ Func_22b5: ; 0x22b5
add hl, bc
ld a, [hl]
ld [wCurCollisionAttribute], a
- ld hl, Data_250a
+ ld hl, BallPositionPointerOffsetDeltas
add hl, bc
- ld a, [wd7f3]
+ ld a, [wBallPositionPointerOffsetFromStageTopLeft]
add [hl]
ld [wd7f6], a
- ld a, [wd7f4]
+ ld a, [wBallPositionPointerOffsetFromStageTopLeft + 1]
adc $0
ld [wd7f7], a
ret
@@ -4787,11 +4800,27 @@ Func_248a: ; 0x248a
scf
ret
-Data_250a:
- dr $250a, $250e
-
-Data_250e:
- dr $250e, $252e
+BallPositionPointerOffsetDeltas:
+ db $00, $20
+ db $01, $21
+
+SubTileBallPosDeltas:
+ db 4, 0
+ db 4, 1
+ db 3, 3
+ db 1, 4
+ db 0, 4
+ db -1, 4
+ db -3, 3
+ db -4, 1
+ db -4, 0
+ db -4, -1
+ db -3, -3
+ db -1, -4
+ db 0, -4
+ db 1, -4
+ db 3, -3
+ db 4, -1
SubTileXPos_CollisionDataPointers: ; 0x252e
dw SubTileXPos_CollisionData0
@@ -4947,8 +4976,11 @@ SubTileXPos_CollisionData7: ; 0x268e
db $18, $10, $04
db $18, $08, $03
-Data_26be:
- dr $26be, $2720
+SineTable:
+ dr $26be, $26ff
+
+Data_26ff:
+ dr $26ff, $2720
CheckGameObjectCollisions: ; 0x2720
ld a, $ff
@@ -5595,7 +5627,7 @@ ApplyTiltForces: ; 0x36c1
ld l, a
bit 7, h
ret nz
- ld a, [wd7ea]
+ ld a, [wCollisionForceAngle]
ld c, a
ld b, $0
sla c
diff --git a/home/text.asm b/home/text.asm
index 9549408..97de605 100755
--- a/home/text.asm
+++ b/home/text.asm
@@ -674,10 +674,7 @@ Func_3475: ; 0x3475
call HandleTilts
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(HandleFlippers)
- ld hl, HandleFlippers
- call nz, BankSwitch
+ callba nz, HandleFlippers
callba Func_84b7
call Func_33e3
call Func_926
diff --git a/hram.asm b/hram.asm
index 36e2800..0bebc0a 100755
--- a/hram.asm
+++ b/hram.asm
@@ -36,6 +36,13 @@ hNumFramesSinceLastVBlank EQU $FFB2
hNumFramesDropped EQU $FFB3
hVBlankCount EQU $FFB4
+hSignedMathSignBuffer EQU $FFB6
+hSignedMathSignBuffer2 EQU $FFB7
+
+hSineOrCosineArgumentBuffer EQU $FF8C
+hCosineResultBuffer EQU $FF8D
+hSineResultBuffer EQU $FF8F
+
hFlipperYCollisionAttribute EQU $FFBF ; Vertical collision attribute for when ball collides with a flipper.
hFFC4 = $FFC4
diff --git a/macros.asm b/macros.asm
index 51091bc..02d2e1f 100755
--- a/macros.asm
+++ b/macros.asm
@@ -60,9 +60,15 @@ bigdw: MACRO ; big-endian word
callba: MACRO
ld [hFarCallTempA], a
+ IF _NARG > 1
+ ld a, BANK(\2)
+ ld hl, \2
+ call \1, BankSwitch
+ ELSE
ld a, BANK(\1)
ld hl, \1
call BankSwitch
+ ENDC
ENDM
bigBCD6: MACRO
diff --git a/main.asm b/main.asm
index fa48692..98ee1ec 100755
--- a/main.asm
+++ b/main.asm
@@ -37,9 +37,9 @@ Func_800a: ; 0x800a
ld a, $45
ld [hLCDC], a
ld a, $e4
- ld [wd80c], a
- ld [wd80d], a
- ld [wd80e], a
+ ld [wBGP], a
+ ld [wOBP0], a
+ ld [wOBP1], a
xor a
ld [hSCX], a
ld [hSCY], a
@@ -264,10 +264,10 @@ CheckForResetButtonCombo: ; 0x8167
ld a, $41
ld [hLCDC], a
ld a, $e4
- ld [wd80c], a
+ ld [wBGP], a
xor a
- ld [wd80d], a
- ld [wd80e], a
+ ld [wOBP0], a
+ ld [wOBP1], a
ld [hSCX], a
ld [hSCY], a
ld a, [hGameBoyColorFlag]
@@ -372,10 +372,10 @@ FadeInCopyrightScreen: ; 0x8228
ld a, $41
ld [hLCDC], a
ld a, $e4
- ld [wd80c], a
+ ld [wBGP], a
xor a
- ld [wd80d], a
- ld [wd80e], a
+ ld [wOBP0], a
+ ld [wOBP1], a
ld [hSCX], a
ld [hSCY], a
ld a, [hGameBoyColorFlag]
@@ -553,7 +553,7 @@ StartBallForStage: ; 0x83ba
and a
jr z, .asm_83c7
call Func_8444
- call Func_8461
+ call RestartStageMusic
ret
.asm_83c7
@@ -576,7 +576,7 @@ StartBallForStage: ; 0x83ba
ld [wd548], a
ld [wd549], a
ld a, $20
- ld [wd7ab], a
+ ld [wSCX], a
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_8404: ; 0x8404
@@ -625,10 +625,10 @@ Func_8444: ; 0x8444
.asm_8460
ret
-Func_8461: ; 0x8461
- ld a, [wd7c0]
+RestartStageMusic: ; 0x8461
+ ld a, [wStageSongBank]
call SetSongBank
- ld a, [wd7bf]
+ ld a, [wStageSong]
ld e, a
ld d, $0
call PlaySong
@@ -1203,7 +1203,7 @@ DrawInGameMenu: ; 0x87ed
call LoadVRAMData
ret
-Data_8817: ; 0x8817
+CollisionForceAngles: ; 0x8817
; This data has something to do with collisions.
db $C0
db $C5
@@ -1462,7 +1462,7 @@ Data_8817: ; 0x8817
db $2B
db $B6
-Data_8917: ; 0x8917
+CollisionYDeltas: ; 0x8917
; This has to do with y-collision data
dw $0000
dw $FFE0
@@ -1721,7 +1721,7 @@ Data_8917: ; 0x8917
dw $FBA3
dw $003E
-Data_8b17: ; 0x8b17
+CollisionXDeltas: ; 0x8b17
; This data has to do with x-collision data
dw $FF00
dw $FEFB
@@ -2368,11 +2368,11 @@ FadeInTitlescreen: ; 0xc00e
ld a, $43
ld [hLCDC], a
ld a, $e4
- ld [wd80c], a
+ ld [wBGP], a
ld a, $d2
- ld [wd80d], a
+ ld [wOBP0], a
ld a, $e1
- ld [wd80e], a
+ ld [wOBP1], a
xor a
ld [hSCX], a
ld [hSCY], a
@@ -2836,10 +2836,10 @@ Func_c35a: ; 0xc35a
ld a, $47
ld [hLCDC], a
ld a, $e4
- ld [wd80c], a
- ld [wd80d], a
+ ld [wBGP], a
+ ld [wOBP0], a
ld a, $d2
- ld [wd80e], a
+ ld [wOBP1], a
xor a
ld [hSCX], a
ld [hSCY], a
@@ -4011,10 +4011,10 @@ Func_cb14: ; 0xcb14
ld a, $43
ld [hLCDC], a
ld a, $e0
- ld [wd80c], a
+ ld [wBGP], a
ld a, $e1
- ld [wd80d], a
- ld [wd80e], a
+ ld [wOBP0], a
+ ld [wOBP1], a
xor a
ld [hSCX], a
ld [hNextFrameHBlankSCX], a
@@ -5672,10 +5672,10 @@ LoadFieldSelectScreen: ; 0xd6dd
ld a, $43
ld [hLCDC], a
ld a, $e4
- ld [wd80c], a
+ ld [wBGP], a
ld a, $d2
- ld [wd80d], a
- ld [wd80e], a
+ ld [wOBP0], a
+ ld [wOBP1], a
xor a
ld [hSCX], a
ld [hSCY], a
@@ -5882,13 +5882,13 @@ HandlePinballGame: ; 0xd853
ld a, [wScreenState]
rst JumpTable ; calls JumpToFuncInTable
PinballGameScreenFunctions: ; 0xd857
- dw Func_d861
- dw Func_d87f
- dw Func_d909
- dw Func_da36
- dw Func_dab2
+ dw GameScreenFunction_LoadGFX
+ dw GameScreenFunction_StartBall
+ dw GameScreenFunction_HandleBallPhysics
+ dw GameScreenFunction_HandleBallLoss
+ dw GameScreenFunction_EndBall
-Func_d861: ; 0xd861
+GameScreenFunction_LoadGFX: ; 0xd861
xor a
ld [wd908], a
callba InitializeStage
@@ -5900,16 +5900,16 @@ Func_d861: ; 0xd861
inc [hl]
ret
-Func_d87f: ; 0xd87f
+GameScreenFunction_StartBall: ; 0xd87f
ld a, $67
ld [hLCDC], a
ld a, $e4
- ld [wd80c], a
+ ld [wBGP], a
ld a, $e1
- ld [wd80d], a
+ ld [wOBP0], a
ld a, $e4
- ld [wd80e], a
- ld a, [wd7ab]
+ ld [wOBP1], a
+ ld a, [wSCX]
ld [hSCX], a
xor a
ld [hSCY], a
@@ -5946,7 +5946,7 @@ Func_d87f: ; 0xd87f
inc [hl]
ret
-Func_d909: ; 0xd909
+GameScreenFunction_HandleBallPhysics: ; 0xd909
; main loop for stage logic
xor a
ld [wFlipperCollision], a
@@ -5958,18 +5958,15 @@ Func_d909: ; 0xd909
call HandleTilts
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(HandleFlippers)
- ld hl, HandleFlippers
- call nz, BankSwitch ; only perform flipper routines on the lower-half of stages
+ callba nz, HandleFlippers ; only perform flipper routines on the lower-half of stages
ld a, [wFlipperCollision]
and a
- ld a, [wd7ea]
+ ld a, [wCollisionForceAngle]
push af
- call Func_22b5 ; collision stuff
+ call CheckObjectCollision ; collision stuff
pop af
jr z, .noFlipperCollision
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
.noFlipperCollision
call CheckGameObjectCollisions
call Func_281c ; not collision-related
@@ -5983,16 +5980,17 @@ Func_d909: ; 0xd909
.didntPressMenuKey
ld a, [wd7e9] ; check for collision flag
and a
- jr z, .asm_d9a2
+ jr z, .skip_collision
call ApplyTiltForces
- call LoadBallVelocity
- ld a, [wd7ea]
- call Func_21e7
- call Func_222b
+ call LoadBallVelocity ; bc = x velocity, de = y velocity
+ ld a, [wCollisionForceAngle]
+ call ApplyCollisionForce
+ call ApplyTorque
ld a, [wFlipperCollision]
and a
- jr z, .asm_d993
- ld hl, wd7bc
+ jr z, .not_flippers_2
+ ; de -= *wFlipperYForce
+ ld hl, wFlipperYForce
ld a, [hli]
ld h, [hl]
ld l, a
@@ -6002,7 +6000,8 @@ Func_d909: ; 0xd909
ld a, d
sbc h
ld d, a
- ld hl, wd7ba
+ ; bc += *wFlipperXForce
+ ld hl, wFlipperXForce
ld a, [hli]
ld h, [hl]
ld l, a
@@ -6012,17 +6011,17 @@ Func_d909: ; 0xd909
ld a, b
adc h
ld b, a
- jr .asm_d999
+ jr .next
-.asm_d993
+.not_flippers_2
ld a, [wd7f8]
and a
- jr nz, .asm_d9a2
-.asm_d999
- ld a, [wd7ea]
- call Func_21e5
+ jr nz, .skip_collision
+.next
+ ld a, [wCollisionForceAngle]
+ call NegateAngleAndApplyCollisionForce
call SetBallVelocity
-.asm_d9a2
+.skip_collision
call MoveBallPosition
callba CheckStageTransition
callba Func_84b7
@@ -6039,10 +6038,7 @@ Func_d909: ; 0xd909
.asm_d9e9
ld a, [wd57d]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_86a4)
- ld hl, Func_86a4
- call nz, BankSwitch
+ callba nz, Func_86a4
ld a, [wd4ae]
and a
ret z
@@ -6074,7 +6070,7 @@ SaveGame: ; 0xda05
ld [wScreenState], a
ret
-Func_da36: ; 0xda36
+GameScreenFunction_HandleBallLoss: ; 0xda36
xor a
ld [hJoypadState], a
ld [hNewlyPressedButtons], a
@@ -6088,10 +6084,7 @@ Func_da36: ; 0xda36
call HandleTilts
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(HandleFlippers)
- ld hl, HandleFlippers
- call nz, BankSwitch
+ callba nz, HandleFlippers
callba Func_84b7
call Func_33e3
callba Func_85c7
@@ -6125,7 +6118,7 @@ Func_da36: ; 0xda36
inc [hl]
ret
-Func_dab2: ; 0xdab2
+GameScreenFunction_EndBall: ; 0xdab2
xor a
ld [wd803], a
ld a, [wGameOver]
@@ -6948,8 +6941,8 @@ HandleFlippers: ; 0xe0fe
xor a
ld [wFlipperCollision], a
ld [hFlipperYCollisionAttribute], a
- ld [wd7ba], a
- ld [wd7bb], a
+ ld [wFlipperXForce], a
+ ld [wFlipperXForce + 1], a
call Func_e118
call CheckFlipperCollision
ld a, [wFlipperCollision]
@@ -7549,8 +7542,8 @@ HandleFlipperCollision: ; 0xe442
ld a, $1
ld [wd7e9], a
xor a
- ld [wd7f3], a
- ld [wd7f4], a
+ ld [wBallPositionPointerOffsetFromStageTopLeft], a
+ ld [wBallPositionPointerOffsetFromStageTopLeft + 1], a
ld [wCurCollisionAttribute], a
ld [wd7f6], a
ld [wd7f7], a
@@ -7574,9 +7567,9 @@ HandleFlipperCollision: ; 0xe442
rl d ; multiplied de by 4
call Func_e379
ld a, b
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, l
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, [wBallXPos + 1]
cp $50 ; which flipper did the ball hit?
ld a, [wFlipperXCollisionAttribute]
@@ -7584,15 +7577,15 @@ HandleFlipperCollision: ; 0xe442
cpl ; invert the x collision attribute
inc a
.asm_e48b
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
ld a, $1
ld [wd7eb], a
- ld a, [wd7bd]
+ ld a, [wFlipperYForce + 1]
bit 7, a
ret z
xor a
- ld [wd7bc], a
- ld [wd7bd], a
+ ld [wFlipperYForce], a
+ ld [wFlipperYForce + 1], a
ret
Func_e4a1: ; 0xe4a1
@@ -8318,7 +8311,7 @@ BallMovingDownStageTransitions: ; 0xed4e
db $FF ; STAGE_SEEL_BONUS
Func_ed5e: ; 0xed5e
- ld hl, wd7ab
+ ld hl, wSCX
ld a, [wd7ac]
and a
jr nz, .modify_scx_and_scy
@@ -8847,10 +8840,7 @@ SlotBonusMultiplier: ; 0xf0c1
call .DivideBy25
ld a, c
cp b
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call nz, BankSwitch
+ callba nz, Func_30164
callba Func_16f95
ld a, [wd60c]
callba Func_f154 ; no need for BankSwitch here...
@@ -10739,10 +10729,7 @@ CapturePokemon: ; 0x1052d
jr nc, .asm_105d1
ld c, $a
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_105d1
call SetPokemonOwnedFlag
ld a, [wd624]
@@ -11183,10 +11170,7 @@ Func_10871: ; 0x10871
callba Func_10184
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_102bc)
- ld hl, Func_102bc
- call nz, BankSwitch
+ callba nz, Func_102bc
ret
Func_108f5: ; 0x108f5
@@ -11295,10 +11279,7 @@ Func_1098c: ; 0x1098c
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_102bc)
- ld hl, Func_102bc
- call nz, BankSwitch
+ callba nz, Func_102bc
ret
Func_109fc: ; 0x109fc
@@ -12011,10 +11992,7 @@ Func_10ebb: ; 0x10ebb
callba Func_10184
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_102bc)
- ld hl, Func_102bc
- call nz, BankSwitch
+ callba nz, Func_102bc
ret
IndicatorStatesPointerTable_10f3b: ; 0x10f3b
@@ -12150,10 +12128,7 @@ Func_11061: ; 0x11061
callba Func_10184
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_102bc)
- ld hl, Func_102bc
- call nz, BankSwitch
+ callba nz, Func_102bc
ret
IndicatorStatesPointerTable_110ed: ; 0x110ed
@@ -13917,10 +13892,7 @@ Func_1414b: ; 0x1414b
callba Func_10362
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_10301)
- ld hl, Func_10301
- call nz, BankSwitch
+ callba nz, Func_10301
ld a, [wd5f3]
and a
ret z
@@ -14004,10 +13976,7 @@ Func_14210: ; 0x14210
callba Func_10184
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_102bc)
- ld hl, Func_102bc
- call nz, BankSwitch
+ callba nz, Func_102bc
ret
Func_14234: ; 0x14234
@@ -14952,10 +14921,7 @@ Func_14920: ; 0x14920
jr nc, .asm_14937
ld c, $a
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_14937
ld a, $1
ld [wd55a], a
@@ -14968,10 +14934,7 @@ Func_14947: ; 0x14947
jr nc, .asm_1495e
ld c, $a
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_1495e
xor a
ld [wd55a], a
@@ -15120,9 +15083,9 @@ Func_14dc9: ; 0x14dc9
ld [wd804], a
ld hl, $0200
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
lb de, $00, $0e
@@ -16332,10 +16295,7 @@ Func_15e93: ; 0x15e93
ret nc
ld c, $19
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
ret
.asm_15f35
@@ -16438,9 +16398,9 @@ Func_15fda: ; 0x15fda
ld [wd804], a
ld hl, $0200
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
ld a, [wWhichBumperId]
@@ -16449,9 +16409,9 @@ Func_15fda: ; 0x15fda
ld b, $0
ld hl, Data_1600e
add hl, bc
- ld a, [wd7ea]
+ ld a, [wCollisionForceAngle]
add [hl]
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
lb de, $00, $0b
call PlaySoundEffect
ret
@@ -16933,10 +16893,7 @@ Func_164e3: ; 0x164e3
.asm_16506
ld hl, wCurrentStage
bit 0, [hl]
- ld [hFarCallTempA], a
- ld a, Bank(Func_30256)
- ld hl, Func_30256
- call nz, BankSwitch
+ callba nz, Func_30256
ld a, [wd604]
and a
ret nz
@@ -17001,10 +16958,7 @@ Func_1652d: ; 0x1652d
Func_1658f: ; 0x1658f
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(LoadGreyBillboardPaletteData)
- ld hl, LoadGreyBillboardPaletteData
- call nz, BankSwitch
+ callba nz, LoadGreyBillboardPaletteData
.showNextMap
ld a, [wInitialMapSelectionIndex]
inc a
@@ -17155,10 +17109,7 @@ Func_1669e: ; 0x1669e
jr nc, .asm_166f0
ld c, $a
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_166f0
lb de, $16, $10
call PlaySoundEffect
@@ -17495,10 +17446,7 @@ Func_16d9d: ; 016d9d
jr nc, .asm_16e24
ld c, $19
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_16e24
ld a, [wd60c]
ld [wd614], a
@@ -18595,7 +18543,7 @@ StartBallGengarBonusStage: ; 0x18157
ld a, $56
ld [wBallYPos + 1], a
xor a
- ld [wd7ab], a
+ ld [wSCX], a
ld [wStageCollisionState], a
ld [wd653], a
xor a
@@ -18703,7 +18651,7 @@ CheckSingleGastlyCollision: ; 0x1820d
bit 7, a
jr nz, .noCollision
sla a
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
ld a, $1
ld [wd7e9], a
scf
@@ -18780,7 +18728,7 @@ CheckSingleHaunterCollision: ; 0x18298
bit 7, a
jr nz, .noCollision
sla a
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
ld a, $1
ld [wd7e9], a
scf
@@ -18843,7 +18791,7 @@ CheckGiantGengarCollision: ; 0x18308
bit 7, a
jr nz, .noCollision
sla a
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
ld a, $1
ld [wd7e9], a
scf
@@ -18984,9 +18932,9 @@ Func_18464: ; 0x18464
ld [wd804], a
ld hl, $0100
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
lb de, $00, $2c
@@ -19203,9 +19151,9 @@ Func_1860b: ; 0x1860b
ld [wd804], a
ld hl, $0100
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
lb de, $00, $2d
@@ -19442,9 +19390,9 @@ Func_187b1: ; 0x187b1
ld [wd804], a
ld hl, $0200
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
ld a, [wGengarYPos]
@@ -19773,9 +19721,9 @@ Func_18d34: ; 0x18d34
ld [wd804], a
ld hl, $0100
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
ld de, $002f
@@ -20260,7 +20208,7 @@ StartBallMewtwoBonusStage: ; 0x192e3
ld a, $80
ld [wBallXVelocity], a
xor a
- ld [wd7ab], a
+ ld [wSCX], a
ld [wStageCollisionState], a
ld [wd6a9], a
ld a, [wd4c9]
@@ -21092,7 +21040,7 @@ StartBallDiglettBonusStage: ; 0x19a38
ld a, $40
ld [wBallXVelocity], a
xor a
- ld [wd7ab], a
+ ld [wSCX], a
ld [wStageCollisionState], a
ld [wd73a], a
ld hl, wDiglettStates
@@ -21313,9 +21261,9 @@ Func_19c52: ; 0x19c52
call PlaySoundEffect
ld hl, $0100
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
ld a, [wd73c]
@@ -21626,9 +21574,9 @@ Func_1aad4: ; 0x1aad4
ld [wd804], a
ld hl, $0200
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
.asm_1ab2c
@@ -21980,7 +21928,7 @@ StartBallAfterBonusStageBlueField: ; 0x1c129
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wd496], a
- ld [wd7ab], a
+ ld [wSCX], a
ld [wd7be], a
ld a, [wBallTypeBackup]
ld [wBallType], a
@@ -22218,10 +22166,7 @@ Func_1c305: ; 0x1c305
callba Func_10362
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_10301)
- ld hl, Func_10301
- call nz, BankSwitch
+ callba nz, Func_10301
ld a, [wd5f3]
and a
ret z
@@ -22305,10 +22250,7 @@ Func_1c3ca: ; 0x1c3ca
callba Func_10184
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_102bc)
- ld hl, Func_102bc
- call nz, BankSwitch
+ callba nz, Func_102bc
ret
Func_1c3ee: ; 0x1c3ee
@@ -22850,10 +22792,7 @@ Func_1c7d7: ; 0x1c7d7
Func_1c839: ; 0x1c839
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(LoadGreyBillboardPaletteData)
- ld hl, LoadGreyBillboardPaletteData
- call nz, BankSwitch
+ callba nz, LoadGreyBillboardPaletteData
.showNextMap
ld a, [wInitialMapSelectionIndex]
inc a
@@ -23106,9 +23045,9 @@ Func_1ca29: ; 0x1ca29
ld [wd804], a
ld hl, $0200
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
lb de, $00, $0e
@@ -23331,9 +23270,9 @@ Func_1ce94: ; 0x1ce94
ld [wd804], a
ld hl, $0200
ld a, l
- ld [wd7bc], a
+ ld [wFlipperYForce], a
ld a, h
- ld [wd7bd], a
+ ld [wFlipperYForce + 1], a
ld a, $80
ld [wFlipperCollision], a
ld a, [wWhichBumperId]
@@ -23342,9 +23281,9 @@ Func_1ce94: ; 0x1ce94
ld b, $0
ld hl, Data_1cec8
add hl, bc
- ld a, [wd7ea]
+ ld a, [wCollisionForceAngle]
add [hl]
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
lb de, $00, $0b
call PlaySoundEffect
ret
@@ -23572,10 +23511,7 @@ Func_1d133: ; 0x1d133
jr nc, .asm_1d185
ld c, $a
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_1d185
lb de, $16, $10
call PlaySoundEffect
@@ -23721,10 +23657,7 @@ Func_1d216: ; 0x1d216
ret nc
ld c, $19
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
ret
.asm_1d2b6
@@ -23832,10 +23765,7 @@ HandleEnteringCloyster: ; 0x1d32d
ret nc
ld c, $19
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
ret
.asm_1d3cb
@@ -23952,10 +23882,7 @@ Func_1d438: ; 0x1d438
jr nc, .asm_1d4e9
ld c, $19
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_1d4e9
ld a, [wd60c]
ld [wd614], a
@@ -24505,10 +24432,7 @@ Func_1ddc7: ; 0x1ddc7
jr nc, .asm_1dde4
ld c, $a
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_1dde4
xor a
ld [wd55a], a
@@ -24524,10 +24448,7 @@ Func_1ddf4: ; 0x1ddf4
jr nc, .asm_1de11
ld c, $a
call Func_e55
- ld [hFarCallTempA], a
- ld a, Bank(Func_30164)
- ld hl, Func_30164
- call z, BankSwitch
+ callba z, Func_30164
.asm_1de11
ld a, $1
ld [wd55a], a
@@ -25477,10 +25398,7 @@ Func_1e9c0: ; 0x1e9c0
.asm_1e9e3
ld hl, wCurrentStage
bit 0, [hl]
- ld [hFarCallTempA], a
- ld a, Bank(Func_30256)
- ld hl, Func_30256
- call nz, BankSwitch
+ callba nz, Func_30256
ld a, [wd604]
and a
ret nz
@@ -26697,10 +26615,7 @@ Func_2006b: ; 0x2006b
callba Func_10362
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_10301)
- ld hl, Func_10301
- call nz, BankSwitch
+ callba nz, Func_10301
.asm_20098
ld a, $1
ld [wd5c6], a
@@ -27000,10 +26915,7 @@ Func_2032c: ; 0x2032c
callba Func_10362
ld a, [hGameBoyColorFlag]
and a
- ld [hFarCallTempA], a
- ld a, Bank(Func_10301)
- ld hl, Func_10301
- call nz, BankSwitch
+ callba nz, Func_10301
.asm_20333
ld a, $1
ld [wd5c6], a
@@ -27317,10 +27229,7 @@ Func_205e0: ; 0x205e0
ld [wIndicatorStates + 10], a
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(Func_14135)
- ld hl, Func_14135
- call nz, BankSwitch
+ callba nz, Func_14135
ld bc, OneMillionPoints
callba AddBigBCD6FromQueue
call FillBottomMessageBufferWithBlackTile
@@ -27743,10 +27652,7 @@ Func_20977: ; 0x20977
ld [wIndicatorStates + 10], a
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(Func_14135)
- ld hl, Func_14135
- call nz, BankSwitch
+ callba nz, Func_14135
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_209bf
@@ -27794,10 +27700,7 @@ Func_209eb: ; 0x209eb
ld [wIndicatorStates + 10], a
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(Func_14135)
- ld hl, Func_14135
- call nz, BankSwitch
+ callba nz, Func_14135
ld a, $58
ld [wd556], a
ld a, $2
@@ -27872,10 +27775,7 @@ asm_20a9f:
ld [wIndicatorStates + 10], a
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(Func_14135)
- ld hl, Func_14135
- call nz, BankSwitch
+ callba nz, Func_14135
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_20ada
@@ -28058,10 +27958,7 @@ Func_20c08: ; 0x20c08
ld [wIndicatorStates + 3], a
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(Func_1c2cb)
- ld hl, Func_1c2cb
- call nz, BankSwitch
+ callba nz, Func_1c2cb
ld bc, OneMillionPoints
callba AddBigBCD6FromQueue
call FillBottomMessageBufferWithBlackTile
@@ -28464,10 +28361,7 @@ Func_20f75: ; 0x20f75
ld [wIndicatorStates + 3], a
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(Func_1c2cb)
- ld hl, Func_1c2cb
- call nz, BankSwitch
+ callba nz, Func_1c2cb
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_20fc3
@@ -28516,10 +28410,7 @@ Func_20fef: ; 0x20fef
ld [wIndicatorStates + 3], a
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(Func_1c2cb)
- ld hl, Func_1c2cb
- call nz, BankSwitch
+ callba nz, Func_1c2cb
ld a, $58
ld [wd556], a
ld a, $2
@@ -28614,10 +28505,7 @@ asm_210c7:
ld [wIndicatorStates + 2], a
ld a, [wCurrentStage]
bit 0, a
- ld [hFarCallTempA], a
- ld a, Bank(Func_1c2cb)
- ld hl, Func_1c2cb
- call nz, BankSwitch
+ callba nz, Func_1c2cb
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_21102
@@ -28781,7 +28669,7 @@ StartBallMeowthBonusStage: ; 0x24059
ld a, $40
ld [wBallXVelocity], a
xor a
- ld [wd7ab], a
+ ld [wSCX], a
ld [wStageCollisionState], a
ld [wd6e6], a
ld hl, wd6f3
@@ -28922,7 +28810,7 @@ CheckMeowthCollision: ; 0x24170
bit 7, a
jr nz, .noCollision
sla a
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
ld a, $1
ld [wd7e9], a
ld a, [wd6ec]
@@ -29070,7 +28958,7 @@ CheckJewelCollision: ; 0x24272
bit 7, a
jr nz, .noCollision
sla a
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
ld a, $1
ld [wd7e9], a
scf
@@ -31140,7 +31028,7 @@ StartBallSeelBonusStage: ; 0x25af1
ld a, $80
ld [wBallXVelocity], a
xor a
- ld [wd7ab], a
+ ld [wSCX], a
ld [wStageCollisionState], a
ld [wd766], a
ld a, $0
@@ -31284,7 +31172,7 @@ CheckSeelHeadCollision: ; 0x25c12
bit 7, a
jr nz, .noCollision
sla a
- ld [wd7ea], a
+ ld [wCollisionForceAngle], a
ld a, $1
ld [wd7e9], a
scf
@@ -32284,11 +32172,11 @@ LoadPokedexScreen: ; 0x2800e
ld a, $23
ld [hLCDC], a
ld a, $e4
- ld [wd80c], a
+ ld [wBGP], a
ld a, $93
- ld [wd80d], a
+ ld [wOBP0], a
ld a, $e4
- ld [wd80e], a
+ ld [wOBP1], a
xor a
ld [hSCX], a
ld a, $8
@@ -36601,7 +36489,7 @@ StartBallAfterBonusStageRedField: ; 0x30128
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wd496], a
- ld [wd7ab], a
+ ld [wSCX], a
ld [wd7be], a
ld a, [wBallTypeBackup]
ld [wBallType], a
diff --git a/wram.asm b/wram.asm
index bd732ec..d74b9cc 100755
--- a/wram.asm
+++ b/wram.asm
@@ -1699,7 +1699,7 @@ wUpperTiltPushing:: ; 0xd7a9
wd7aa:: ; 0xd7aa
ds $1
-wd7ab:: ; 0xd7ab
+wSCX:: ; 0xd7ab
ds $1
wd7ac:: ; 0xd7ac
@@ -1744,25 +1744,19 @@ wFlipperXCollisionAttribute:: ; 0xd7b8
wFlipperCollision:: ; 0xd7b9
ds $1
-wd7ba:: ; 0xd7ba
- ds $1
-
-wd7bb:: ; 0xd7bb
- ds $1
-
-wd7bc:: ; 0xd7bc
- ds $1
+wFlipperXForce:: ; 0xd7ba
+ dw
-wd7bd:: ; 0xd7bd
- ds $1
+wFlipperYForce:: ; 0xd7bc
+ dw
wd7be:: ; 0xd7be
ds $1
-wd7bf:: ; 0xd7bf
+wStageSong:: ; 0xd7bf
ds $1
-wd7c0:: ; 0xd7c0
+wStageSongBank:: ; 0xd7c0
ds $1
wd7c1:: ; 0xd7c1
@@ -1798,7 +1792,7 @@ wd7d9:: ; 0xd7d9
wd7e9:: ; 0xd7e9
ds $1
-wd7ea:: ; 0xd7ea
+wCollisionForceAngle:: ; 0xd7ea
ds $1
wd7eb:: ; 0xd7eb
@@ -1819,11 +1813,8 @@ wStageCollisionMasksBank:: ; 0xd7f1
wd7f2:: ; 0xd7f2
ds $1
-wd7f3:: ; 0xd7f3
- ds $1
-
-wd7f4:: ; 0xd7f4
- ds $1
+wBallPositionPointerOffsetFromStageTopLeft:: ; 0xd7f3
+ dw
wCurCollisionAttribute:: ; 0xd7f5
ds $1
@@ -1888,13 +1879,13 @@ wd809:: ; 0xd809
wd80a:: ; 0xd80a
ds $2
-wd80c:: ; 0xd80c
+wBGP:: ; 0xd80c
ds $1
-wd80d:: ; 0xd80d
+wOBP0:: ; 0xd80d
ds $1
-wd80e:: ; 0xd80e
+wOBP1:: ; 0xd80e
ds $1
wd80f:: ; 0xd80f
@@ -2443,50 +2434,33 @@ wdaa3:: ; 0xdaa3
wdcad:: ; 0xdcad
ds $53
+SECTION "Audio RAM", WRAMX [$dd00], BANK [1]
wdd00:: ; 0xdd00
ds $1
-wdd01:: ; 0xdd01
+wChannel1:: ; 0xdd01
ds $32
-wdd33:: ; 0xdd33
+wChannel2:: ; 0xdd33
ds $32
-wdd65:: ; 0xdd65
+wChannel3:: ; 0xdd65
ds $32
-wdd97:: ; 0xdd97
+wChannel4:: ; 0xdd97
ds $32
-wddc9:: ; 0xddc9
- ds $2
-
-wddcb:: ; 0xddcb
- ds $30
-
-wddfb:: ; 0xddfb
- ds $2
-
-wddfd:: ; 0xddfd
- ds $24
-
-wde21:: ; 0xde21
- ds $c
-
-wde2d:: ; 0xde2d
- ds $2
-
-wde2f:: ; 0xde2f
- ds $30
+wChannel5:: ; 0xddc9
+ ds $32
-wde5f:: ; 0xde5f
- ds $2
+wChannel6:: ; 0xddfb
+ ds $32
-wde61:: ; 0xde61
- ds $24
+wChannel7:: ; 0xde2d
+ ds $32
-wde85:: ; 0xde85
- ds $c
+wChannel8:: ; 0xde5f
+ ds $32
wde91:: ; 0xde91
ds $1
@@ -2569,12 +2543,10 @@ wdead:: ; 0xdead
wdeae:: ; 0xdeae
ds $2
+wMusicRAMEnd:: ; deb0
wdeb0:: ; 0xdeb0
ds $50
-wStack:: ; 0xdf00
- ds $ff
-
-wdfff:: ; 0xdfff
- ds $1
-
+SECTION "Stack", WRAMX [$dfff], BANK [1]
+wStack:: ; 0xdfff
+ ds -$ff