summaryrefslogtreecommitdiff
path: root/src/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/bank02.asm18
-rw-r--r--src/engine/bank06.asm261
-rw-r--r--src/engine/bank07.asm298
-rw-r--r--src/engine/home.asm4
4 files changed, 371 insertions, 210 deletions
diff --git a/src/engine/bank02.asm b/src/engine/bank02.asm
index 51127a2..d48250f 100644
--- a/src/engine/bank02.asm
+++ b/src/engine/bank02.asm
@@ -1215,7 +1215,7 @@ DrawPlayArea_HandText: ; 8676 (2:4676)
; returns a = $ff if B pressed
HandleCheckMenuInput_YourOrOppPlayArea: ; 86ac (2:46ac)
xor a
- ld [wcfe3], a
+ ld [wPlaysSfx], a
ld a, [wCheckMenuCursorXPosition]
ld d, a
ld a, [wCheckMenuCursorYPosition]
@@ -1283,7 +1283,7 @@ HandleCheckMenuInput_YourOrOppPlayArea: ; 86ac (2:46ac)
.erase
ld a, $01
- ld [wcfe3], a
+ ld [wPlaysSfx], a
push de
call EraseCheckMenuCursor_YourOrOppPlayArea
pop de
@@ -1319,7 +1319,7 @@ HandleCheckMenuInput_YourOrOppPlayArea: ; 86ac (2:46ac)
ret
.sfx
- ld a, [wcfe3]
+ ld a, [wPlaysSfx]
or a
jr z, .draw_cursor
call PlaySFX
@@ -1638,7 +1638,7 @@ LoadCursorTile: ; 8992 (2:4992)
; similar to OpenInPlayAreaScreen_HandleInput
Func_89ae: ; 89ae (2:49ae)
xor a
- ld [wcfe3], a
+ ld [wPlaysSfx], a
ld hl, wce53
ld e, [hl]
@@ -1757,7 +1757,7 @@ Func_89ae: ; 89ae (2:49ae)
.next
ld a, $01
- ld [wcfe3], a
+ ld [wPlaysSfx], a
; reset cursor blink
xor a
@@ -1784,7 +1784,7 @@ Func_89ae: ; 89ae (2:49ae)
ret
.return
- ld a, [wcfe3]
+ ld a, [wPlaysSfx]
or a
jr z, .skip_sfx
call PlaySFX
@@ -2267,7 +2267,7 @@ ResetCheckMenuCursorPositionAndBlink: ; 905a (2:505a)
; returns a = $ff if B pressed
HandleCheckMenuInput: ; 9065 (2:5065)
xor a
- ld [wcfe3], a
+ ld [wPlaysSfx], a
ld a, [wCheckMenuCursorXPosition]
ld d, a
ld a, [wCheckMenuCursorYPosition]
@@ -2304,7 +2304,7 @@ HandleCheckMenuInput: ; 9065 (2:5065)
.okay
ld a, $01
- ld [wcfe3], a
+ ld [wPlaysSfx], a
push de
call EraseCheckMenuCursor
pop de
@@ -2337,7 +2337,7 @@ HandleCheckMenuInput: ; 9065 (2:5065)
ret
.no_input
- ld a, [wcfe3]
+ ld a, [wPlaysSfx]
or a
jr z, .check_blink
call PlaySFX
diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm
index e3ee426..19f5e1f 100644
--- a/src/engine/bank06.asm
+++ b/src/engine/bank06.asm
@@ -523,7 +523,7 @@ OpenInPlayAreaScreen_TransitionTable2:
OpenInPlayAreaScreen_HandleInput: ; 183bb (6:43bb)
xor a
- ld [wcfe3], a
+ ld [wPlaysSfx], a
ld hl, wInPlayAreaInputTablePointer
ld e, [hl]
inc hl
@@ -655,7 +655,7 @@ OpenInPlayAreaScreen_HandleInput: ; 183bb (6:43bb)
ld [wInPlayAreaCurPosition], a
.next
ld a, $01
- ld [wcfe3], a
+ ld [wPlaysSfx], a
xor a
ld [wCheckMenuCursorBlinkCounter], a
.check_button
@@ -681,7 +681,7 @@ OpenInPlayAreaScreen_HandleInput: ; 183bb (6:43bb)
ret
.return
- ld a, [wcfe3]
+ ld a, [wPlaysSfx]
or a
jr z, .skip_sfx
call PlaySFX
@@ -947,37 +947,40 @@ GlossaryData2:
Func_18661: ; 18661 (6:4661)
xor a
- ld [wcfe3], a
+ ld [wPlaysSfx], a
ld a, [wCheckMenuCursorXPosition]
ld d, a
ld a, [wCheckMenuCursorYPosition]
ld e, a
ldh a, [hDPadHeld]
or a
- jr z, .asm_46a2
+ jr z, .check_button
+; check input from dpad
bit D_LEFT_F, a
- jr nz, .asm_467a
+ jr nz, .left_or_right
bit D_RIGHT_F, a
- jr z, .asm_4680
-.asm_467a
+ jr z, .check_up_and_down
+.left_or_right
+; swap the lsb of x position value.
ld a, d
- xor $01
+ xor $1
ld d, a
- jr .asm_468c
-.asm_4680
+ jr .cursor_moved
+
+.check_up_and_down
bit D_UP_F, a
- jr nz, .asm_4688
+ jr nz, .up_or_down
bit D_DOWN_F, a
- jr z, .asm_46a2
-.asm_4688
+ jr z, .check_button
+.up_or_down
ld a, e
- xor $01
+ xor $1
ld e, a
-.asm_468c
- ld a, $01
- ld [wcfe3], a
+.cursor_moved
+ ld a, $1
+ ld [wPlaysSfx], a
push de
- call .asm_46d4
+ call .draw_blank_cursor
pop de
ld a, d
ld [wCheckMenuCursorXPosition], a
@@ -985,59 +988,66 @@ Func_18661: ; 18661 (6:4661)
ld [wCheckMenuCursorYPosition], a
xor a
ld [wCheckMenuCursorBlinkCounter], a
-.asm_46a2
+.check_button
ldh a, [hKeysPressed]
and A_BUTTON | B_BUTTON
- jr z, .asm_46bd
+ jr z, .check_cursor_moved
and A_BUTTON
- jr nz, .asm_46b3
- ld a, $ff
+ jr nz, .a_button
+
+; b button
+ ld a, -1
call Func_190fb
scf
ret
-.asm_46b3
- call .asm_46f3
- ld a, $01
+
+; a button
+.a_button
+ call .draw_cursor
+ ld a, 1
call Func_190fb
scf
ret
-.asm_46bd
- ld a, [wcfe3]
+
+.check_cursor_moved
+ ld a, [wPlaysSfx]
or a
- jr z, .asm_46c6
+ jr z, .check_cursor_blink
call PlaySFX
-.asm_46c6
+.check_cursor_blink
ld hl, wCheckMenuCursorBlinkCounter
ld a, [hl]
inc [hl]
- and $0f
+ and %00001111
ret nz
- ld a, $0f
+ ld a, SYM_CURSOR_R
bit D_RIGHT_F, [hl]
- jr z, .asm_46d6
-.asm_46d4 ; 186d4 (6:46d4)
- ld a, $00
-.asm_46d6
+ jr z, .draw_tile
+.draw_blank_cursor ; 186d4 (6:46d4)
+ ld a, SYM_SPACE
+.draw_tile
ld e, a
- ld a, $0a
+ ld a, 10
ld l, a
ld a, [wCheckMenuCursorXPosition]
ld h, a
call HtimesL
ld a, l
- add $01
+ add 1
ld b, a
ld a, [wCheckMenuCursorYPosition]
sla a
- add $0e
+ add 14
ld c, a
ld a, e
+ ; b = 11, c = y_pos * 2 + 14
+ ; h = x_pos * 10, l = 10
call WriteByteToBGMap0
or a
ret
-.asm_46f3: ; 186f3 (6:46f3)
- ld a, $0f
- jr .asm_46d6
+.draw_cursor ; 186f3 (6:46f3)
+ ld a, SYM_CURSOR_R
+ jr .draw_tile
; (6:46f7)
INCLUDE "data/effect_commands.asm"
@@ -1049,7 +1059,7 @@ Func_18f9c: ; 18f9c (6:4f9c)
ld l, a
ld h, 0
add hl, hl
- ld de, Data_006_51a4
+ ld de, PointerTable_MoveAnimation
.asm_4fa8
add hl, de
ld e, [hl]
@@ -1357,154 +1367,9 @@ Func_19168: ; 19168 (6:5168)
ret
-Data_006_51a4:
- dw $0000
- dw $52c6
- dw $52cf
- dw $52c6
- dw $52c6
- dw $52c6
- dw $52d8
- dw $52d8
- dw $52e3
- dw $52d8
- dw $52f0
- dw $52f0
- dw $52f0
- dw $52f0
- dw $52fd
- dw $5308
- dw $5313
- dw $531e
- dw $5329
- dw $5334
- dw $533f
- dw $534a
- dw $5357
- dw $5362
- dw $5362
- dw $536d
- dw $536d
- dw $536d
- dw $5378
- dw $5383
- dw $538e
- dw $5383
- dw $5399
- dw $53a4
- dw $53af
- dw $53ba
- dw $53c5
- dw $53d0
- dw $53d5
- dw $53e0
- dw $53eb
- dw $53f6
- dw $53f6
- dw $53f6
- dw $5401
- dw $540c
- dw $5417
- dw $5422
- dw $542d
- dw $542d
- dw $5438
- dw $5438
- dw $5438
- dw $5438
- dw $5438
- dw $5443
- dw $5443
- dw $544e
- dw $5443
- dw $5443
- dw $5443
- dw $5453
- dw $5453
- dw $5460
- dw $5453
- dw $5467
- dw $5467
- dw $5472
- dw $5472
- dw $547d
- dw $5488
- dw $548f
- dw $549c
- dw $549c
- dw $54a9
- dw $54a9
- dw $54ae
- dw $54ae
- dw $54b3
- dw $54be
- dw $54c3
- dw $54c8
- dw $54d3
- dw $54e0
- dw $54eb
- dw $54f2
- dw $54f9
- dw $5504
- dw $5513
- dw $5516
- dw $5521
- dw $552e
- dw $5533
- dw $553a
- dw $5543
- dw $554a
- dw $5555
- dw $555e
- dw $556d
- dw $5574
- dw $557b
- dw $557e
- dw $5583
- dw $5583
- dw $5583
- dw $558c
- dw $5597
- dw $559c
- dw $55a1
- dw $55a4
- dw $55a9
- dw $55b4
- dw $55b4
- dw $55bf
- dw $55c4
- dw $55c9
- dw $55ce
- dw $55d5
- dw $55e0
- dw $55e5
- dw $55e6
- dw $55ed
- dw $55f2
- dw $55fb
- dw $55fe
- dw $5601
- dw $5604
- dw $5607
- dw $560a
- dw $560f
- dw $5612
- dw $561d
- dw $5628
- dw $562d
- dw $5632
- dw $5637
- dw $5644
- dw $564f
- dw $5654
- dw $5659
- dw $565e
- dw $5665
- dw $5668
- dw $5673
- dw $5673
-
- INCROM $192c6, $1991f
+INCLUDE "data/move_animations.asm"
+
+ INCROM $19674, $1991f
Func_1991f: ; 1991f (6:591f)
add a
@@ -2116,7 +1981,7 @@ endr
; if pressed, set the carry bit on.
NamingScreen_CheckButtonState:
xor a
- ld [wcfe3], a
+ ld [wPlaysSfx], a
ldh a, [hDPadHeld]
or a
jp z, .no_press
@@ -2265,7 +2130,7 @@ NamingScreen_CheckButtonState:
cp d
jp z, NamingScreen_CheckButtonState
ld a, $01
- ld [wcfe3], a
+ ld [wPlaysSfx], a
.no_press
ldh a, [hKeysPressed]
and A_BUTTON | B_BUTTON
@@ -2281,7 +2146,7 @@ NamingScreen_CheckButtonState:
scf
ret
.asm_69ef
- ld a, [wcfe3]
+ ld a, [wPlaysSfx]
or a
jr z, .asm_69f8
call PlaySFX
@@ -2989,7 +2854,7 @@ Func_1aec3: ; 1aec3 (6:6ec3)
Func_1aefb: ; 1aefb (6:6efb)
xor a
- ld [wcfe3], a
+ ld [wPlaysSfx], a
ldh a, [hDPadHeld]
or a
jp z, .asm_6f73
@@ -3063,7 +2928,7 @@ Func_1aefb: ; 1aefb (6:6efb)
cp d
jp z, Func_1aefb
ld a, $01
- ld [wcfe3], a
+ ld [wPlaysSfx], a
.asm_6f73
ldh a, [hKeysPressed]
and $03
@@ -3079,7 +2944,7 @@ Func_1aefb: ; 1aefb (6:6efb)
scf
ret
.asm_6f89
- ld a, [wcfe3]
+ ld a, [wPlaysSfx]
or a
jr z, .asm_6f92
call PlaySFX
@@ -3436,4 +3301,4 @@ Func_1bae4: ; 1bae4 (6:7ae4)
rept $508
db $ff
-endr \ No newline at end of file
+endr
diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm
index 7c53b96..7a2d90a 100644
--- a/src/engine/bank07.asm
+++ b/src/engine/bank07.asm
@@ -367,7 +367,303 @@ Func_1c83d: ; 1c83d (7:483d)
ret
; 0x1c858
- INCROM $1c858, $1cb18
+ INCROM $1c858, $1c8ef
+
+Func_1c8ef: ; 1c8ef (7:48ef)
+ ld a, [wDoFrameFunction + 0]
+ cp LOW(Func_3ba2)
+ jr nz, .error
+ ld a, [wDoFrameFunction + 1]
+ cp HIGH(Func_3ba2)
+ jr z, .okay
+.error
+ debug_ret
+ ret
+
+.okay
+ ld a, [wTempAnimation]
+ ld [wd4bf], a
+ cp $61
+ jp nc, $4b5e ; asm_007_4b5e
+ push hl
+ push bc
+ push de
+ call Func_1cab3
+; hl: pointer
+ ld a, [wd421]
+ or a
+ jr z, .check_to_play_sfx
+
+ push hl
+ ld bc, $0003
+ add hl, bc
+ ld a, [hl]
+ and %10000000
+ pop hl
+
+ jr z, .return
+.check_to_play_sfx
+ push hl
+ ld bc, $0004
+ add hl, bc
+ ld a, [hl]
+ pop hl
+
+ or a
+ jr z, .calc_addr
+ call PlaySFX
+.calc_addr
+ push hl
+ ld bc, $0005
+ add hl, bc
+ ld a, [hl]
+ rlca
+ add $48
+ ld l, a ; LO
+ ld a, HIGH(.address) ; $49
+ adc 0
+ ld h, a ; HI
+; hl: pointer
+ ld a, [hli]
+ ld b, [hl]
+ ld c, a
+ pop hl
+
+ call PushBC_Ret ; call bc
+.return
+ pop de
+ pop bc
+ pop hl
+ ret
+
+.address
+ dw Func_1c94a
+
+Func_1c94a:
+ ld e, l
+ ld d, h
+ ld c, 3
+.loop
+ ld a, [de]
+ or a
+ jr z, .return_with_carry
+ inc de
+ dec c
+ jr nz, .loop
+ ld a, [hli]
+ farcall Func_1299f
+ ld a, [wWhichSprite]
+ ld [wAnimationQueue], a ; push an animation to the queue
+ xor a
+ ld [wd4ca], a
+ ld [wd4cb], a
+ ld a, [hli]
+ farcall $20, $4418
+ ld a, [hli]
+
+ push af
+ ld a, [hli]
+ ld [wd42b], a
+ call Func_1c980
+ pop af
+
+ farcall Func_12ab5
+ or a
+ jr .return
+
+.return_with_carry
+ scf
+.return
+ ret
+
+Func_1c980: ; 1c980 (7:4980)
+ push hl
+ push bc
+ ld a, [wAnimationQueue]
+ ld c, SPRITE_ANIM_FIELD_01
+ call GetSpriteAnimBufferProperty_SpriteInA
+ call Func_1c9a2
+
+ push af
+ and %01100000
+ or [hl]
+ ld [hli], a
+ ld a, b
+ ld [hli], a
+ ld [hl], c
+ pop af
+
+ ld bc, $000c
+ add hl, bc
+ ld c, a
+ and %00000011
+ or [hl]
+ ld [hl], a
+ pop bc
+ pop hl
+ ret
+
+Func_1c9a2: ; 1c9a2 (7:49a2)
+ push hl
+ ld c, 0
+ ld a, [wd42b]
+ and %00000100
+ jr nz, .calc_addr
+
+ ld a, [wd4ae]
+ add a
+ ld c, a
+ add a
+ add c
+ add a
+ ld c, a
+ ld a, [wd4af]
+ cp PLAYER_TURN
+ jr z, .player_turn
+
+ ld a, $06
+ add c
+ ld c, a
+.player_turn
+ ld a, [wd4b0]
+ add c ; a = [wd4b0] + c
+ ld c, a
+ ld b, 0
+ ld hl, Data_1c9e0
+ add hl, bc
+ ld c, [hl]
+.calc_addr
+ ld a, c
+ add a ; a = c * 2
+ add c ; a = c * 3
+ ld c, a
+ ld b, 0
+ ld hl, Data_1ca04
+ add hl, bc
+ ld b, [hl]
+ inc hl
+ ld c, [hl]
+ inc hl
+ ld a, [wd42b]
+ and [hl]
+ pop hl
+ ret
+
+Data_1c9e0:
+ db $01
+ db $01
+ db $01
+ db $01
+ db $01
+ db $01
+ db $02
+ db $02
+ db $02
+ db $02
+ db $02
+ db $02
+ db $03
+ db $04
+ db $05
+ db $06
+ db $07
+ db $08
+ db $03
+ db $04
+ db $05
+ db $06
+ db $07
+ db $08
+ db $09
+ db $0a
+ db $0b
+ db $0c
+ db $0d
+ db $0e
+ db $09
+ db $0a
+ db $0b
+ db $0c
+ db $0d
+ db $0e
+
+macro_1ca04: MACRO
+ dw \1
+ db \2
+ENDM
+Data_1ca04:
+; value(2), flag(1)
+ macro_1ca04 $5858, $08
+ macro_1ca04 $5028, $00
+ macro_1ca04 $3088, $63
+ macro_1ca04 $4858, $00
+ macro_1ca04 $6018, $00
+ macro_1ca04 $6038, $00
+ macro_1ca04 $6058, $00
+ macro_1ca04 $6078, $00
+ macro_1ca04 $6098, $00
+ macro_1ca04 $5058, $00
+ macro_1ca04 $2898, $00
+ macro_1ca04 $2878, $00
+ macro_1ca04 $2858, $00
+ macro_1ca04 $2838, $00
+ macro_1ca04 $2818, $00
+
+Func_1ca31:
+ push hl
+ push bc
+ ld a, [wd4ac]
+ ld b, a
+ ld hl, wd4ad
+ ld a, [hl]
+ ld c, a
+ add %00001000
+ and %01111111
+ cp b
+ jp z, .asm_007_4a6b
+ ld [hl], a
+ ld b, 0
+ ld hl, $d42c
+ add hl, bc
+ ld a, [wTempAnimation]
+ ld [hli], a
+ ld a, [wd4ae]
+ ld [hli], a
+ ld a, [wd4af]
+ ld [hli], a
+ ld a, [wd4b0]
+ ld [hli], a
+ ld a, [$d4b1]
+ ld [hli], a
+ ld a, [$d4b2]
+ ld [hli], a
+ ld a, [$d4b3]
+ ld [hli], a
+ ld a, [wd4be]
+ ld [hl], a
+.asm_007_4a6b
+ pop bc
+ pop hl
+ ret
+
+ INCROM $1ca6e, $1cab3
+
+Func_1cab3: ; 1cab3 (7:4ab3)
+ push bc
+ ld a, [wTempAnimation]
+ ld l, a
+ ld h, 0
+ add hl, hl ; hl = anim * 2
+ ld b, h
+ ld c, l
+ add hl, hl ; hl = anim * 4
+ add hl, bc ; hl = anim * 6
+ ld bc, $4e32
+ add hl, bc
+ pop bc
+ ret
+
+ INCROM $1cac5, $1cb18
Func_1cb18: ; 1cb18 (7:4b18)
push hl
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 15778ca..b7374aa 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -11241,7 +11241,7 @@ CheckAnyAnimationPlaying: ; 3b52 (0:3b52)
ret
Func_3b6a: ; 3b6a (0:3b6a)
- ld [wd422], a
+ ld [wTempAnimation], a ; hold an animation temporarily
ldh a, [hBankROM]
push af
ld [wd4be], a
@@ -11250,7 +11250,7 @@ Func_3b6a: ; 3b6a (0:3b6a)
push de
ld a, $07
call BankswitchROM
- ld a, [wd422]
+ ld a, [wTempAnimation]
cp $61
jr nc, .asm_3b90
ld hl, wd4ad