diff options
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/menu.asm | 587 | ||||
-rw-r--r-- | engine/pack.asm | 24 | ||||
-rw-r--r-- | engine/save.asm | 2 | ||||
-rw-r--r-- | engine/scripting.asm | 2 |
4 files changed, 601 insertions, 14 deletions
diff --git a/engine/menu.asm b/engine/menu.asm new file mode 100755 index 000000000..c1d2949d0 --- /dev/null +++ b/engine/menu.asm @@ -0,0 +1,587 @@ +Function2400e:: ; 2400e + ld hl, Function1c66 + ld a, [wcf94] + rst FarCall + call Function24085 + call UpdateSprites + call Function321c + call Function2408f + ret +; 24022 + +Function24022:: ; 24022 + ld hl, Function1c66 + ld a, [wcf94] + rst FarCall + call Function24085 + callba MobileTextBorder + call UpdateSprites + call Function321c + call Function2408f + ret +; 2403c + +Function2403c:: ; 2403c + ld hl, Function1c66 + ld a, [wcf94] + rst FarCall + call Function24085 + callba MobileTextBorder + call UpdateSprites + call Function321c + call Function2411a + ld hl, wcfa5 + set 7, [hl] +.asm_2405a + call DelayFrame + callba Function10032e + ld a, [wcd2b] + and a + jr nz, .asm_24076 + call Function241ba + ld a, [wcfa8] + and c + jr z, .asm_2405a + call Function24098 + ret + +.asm_24076 + ld a, [wcfa4] + ld c, a + ld a, [wcfa3] + call SimpleMultiply + ld [wMenuCursorBuffer], a + and a + ret +; 24085 + + + +Function24085: ; 24085 + xor a + ld [hBGMapMode], a + call MenuBox + call Function240db + ret +; 2408f + +Function2408f: ; 2408f + call Function2411a + call Function1bc9 + call Function1ff8 + +Function24098: ; 24098 + ld a, [wMenuData2Flags] + bit 1, a + jr z, .asm_240a6 + call Function1bdd + bit 2, a + jr nz, .asm_240c9 + +.asm_240a6 + ld a, [wMenuData2Flags] + bit 0, a + jr nz, .asm_240b4 + call Function1bdd + bit 1, a + jr nz, .asm_240cb + +.asm_240b4 + ld a, [wcfa4] + ld c, a + ld a, [MenuSelection2] + dec a + call SimpleMultiply + ld c, a + ld a, [wcfaa] + add c + ld [wMenuCursorBuffer], a + and a + ret + +.asm_240c9 + scf + ret + +.asm_240cb + scf + ret +; 240cd + +Function240cd: ; 240cd + ld a, [wMenuData2Items] + and $f + ret +; 240d3 + +Function240d3: ; 240d3 + ld a, [wMenuData2Items] + swap a + and $f + ret +; 240db + +Function240db: ; 240db + ld hl, wcf95 + ld e, [hl] + inc hl + ld d, [hl] + call Function1cc6 + call GetTileCoord + call Function240d3 + ld b, a +.asm_240eb + push bc + push hl + call Function240cd + ld c, a +.asm_240f1 + push bc + ld a, [wcf94] + call Function201c + inc de + ld a, [wcf93] + ld c, a + ld b, $0 + add hl, bc + pop bc + dec c + jr nz, .asm_240f1 + pop hl + ld bc, $28 + add hl, bc + pop bc + dec b + jr nz, .asm_240eb + ld hl, wcf98 + ld a, [hli] + ld h, [hl] + ld l, a + or h + ret z + ld a, [wcf97] + rst FarCall + ret +; 2411a + + +Function2411a: ; 2411a (9:411a) + call Function1cc6 + ld a, b + ld [wcfa1], a + dec c + ld a, c + ld [wcfa2], a + call Function240d3 + ld [wcfa3], a + call Function240cd + ld [wcfa4], a + call Function24179 + call Function2418a + call Function24193 + ld a, [wcfa4] + ld e, a + ld a, [wMenuCursorBuffer] + ld b, a + xor a + ld d, $0 +.asm_24146 + inc d + add e + cp b + jr c, .asm_24146 + sub e + ld c, a + ld a, b + sub c + and a + jr z, .asm_24157 + cp e + jr z, .asm_24159 + jr c, .asm_24159 +.asm_24157 + ld a, $1 +.asm_24159 + ld [wcfaa], a + ld a, [wcfa3] + ld e, a + ld a, d + and a + jr z, .asm_24169 + cp e + jr z, .asm_2416b + jr c, .asm_2416b +.asm_24169 + ld a, $1 +.asm_2416b + ld [MenuSelection2], a + xor a + ld [wcfab], a + ld [wcfac], a + ld [wcfad], a + ret +; 24179 + +Function24179: ; 24179 + xor a + ld hl, wcfa5 + ld [hli], a + ld [hld], a + ld a, [wMenuData2Flags] + bit 5, a + ret z + set 5, [hl] + set 4, [hl] + ret +; 2418a + +Function2418a: ; 2418a + ld a, [wcf93] + or $20 + ld [wcfa7], a + ret +; 24193 + +Function24193: ; 24193 + ld hl, wMenuData2Flags + ld a, $1 + bit 0, [hl] + jr nz, .asm_2419e + or $2 + +.asm_2419e + bit 1, [hl] + jr z, .asm_241a4 + or $4 + +.asm_241a4 + ld [wcfa8], a + ret +; 241a8 + + +Function241a8:: ; 241a8 + call Function24329 +Function241ab:: ; 241ab + ld hl, wcfa6 + res 7, [hl] + ld a, [hBGMapMode] + push af + call Function24216 + pop af + ld [hBGMapMode], a + ret +; 241ba + +Function241ba: ; 241ba + ld hl, wcfa6 + res 7, [hl] + ld a, [hBGMapMode] + push af + call Function2431a + call Function24249 + jr nc, .asm_241cd + call Function24270 + +.asm_241cd + pop af + ld [hBGMapMode], a + call Function1bdd + ld c, a + ret +; 241d5 + + +Function241d5: ; 241d5 + call Function24329 +.loop + call Function2431a + call Function10402d ; BUG: This function is in another bank. + ; Pointer in current bank (9) is bogus. + call Function241fa + jr nc, .done + call Function24270 + jr c, .done + ld a, [wcfa5] + bit 7, a + jr nz, .done + call Function1bdd + ld c, a + ld a, [wcfa8] + and c + jr z, .loop + +.done + ret +; 241fa + +Function241fa: ; 241fa +.loop + call Function24259 + ret c + ld c, 1 + ld b, 3 + call Function10062d ; BUG: This function is in another bank. + ; Pointer in current bank (9) is bogus. + ret c + callba Function100337 + ret c + ld a, [wcfa5] + bit 7, a + jr z, .loop + and a + ret +; 24216 + + +Function24216: ; 24216 +.asm_24216 + call Function2431a + call Function24238 + call Function24249 + jr nc, .asm_24237 + call Function24270 + jr c, .asm_24237 + ld a, [wcfa5] + bit 7, a + jr nz, .asm_24237 + call Function1bdd + ld b, a + ld a, [wcfa8] + and b + jr z, .asm_24216 + +.asm_24237 + ret +; 24238 + +Function24238: ; 24238 + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + call WaitBGMap + pop af + ld [hOAMUpdate], a + xor a + ld [hBGMapMode], a + ret +; 24249 + +Function24249: ; 24249 +.asm_24249 + call RTC + call Function24259 + ret c + ld a, [wcfa5] + bit 7, a + jr z, .asm_24249 + and a + ret +; 24259 + +Function24259: ; 24259 + ld a, [wcfa5] + bit 6, a + jr z, .asm_24266 + callab Function8cf62 + +.asm_24266 + call JoyTextDelay + call Function1bdd + and a + ret z + scf + ret +; 24270 + +Function24270: ; 24270 + call Function1bdd + bit 0, a + jp nz, Function24318 + bit 1, a + jp nz, Function24318 + bit 2, a + jp nz, Function24318 + bit 3, a + jp nz, Function24318 + bit 4, a + jr nz, .asm_242fa + bit 5, a + jr nz, .asm_242dc + bit 6, a + jr nz, .asm_242be + bit 7, a + jr nz, .asm_242a0 + and a + ret + +.asm_24299: ; 24299 + ld hl, wcfa6 + set 7, [hl] + scf + ret + +.asm_242a0 + ld hl, MenuSelection2 + ld a, [wcfa3] + cp [hl] + jr z, .asm_242ac + inc [hl] + xor a + ret + +.asm_242ac + ld a, [wcfa5] + bit 5, a + jr nz, .asm_242ba + bit 3, a + jp nz, .asm_24299 + xor a + ret + +.asm_242ba + ld [hl], $1 + xor a + ret + +.asm_242be + ld hl, MenuSelection2 + ld a, [hl] + dec a + jr z, .asm_242c8 + ld [hl], a + xor a + ret + +.asm_242c8 + ld a, [wcfa5] + bit 5, a + jr nz, .asm_242d6 + bit 2, a + jp nz, .asm_24299 + xor a + ret + +.asm_242d6 + ld a, [wcfa3] + ld [hl], a + xor a + ret + +.asm_242dc + ld hl, wcfaa + ld a, [hl] + dec a + jr z, .asm_242e6 + ld [hl], a + xor a + ret + +.asm_242e6 + ld a, [wcfa5] + bit 4, a + jr nz, .asm_242f4 + bit 1, a + jp nz, .asm_24299 + xor a + ret + +.asm_242f4 + ld a, [wcfa4] + ld [hl], a + xor a + ret + +.asm_242fa + ld hl, wcfaa + ld a, [wcfa4] + cp [hl] + jr z, .asm_24306 + inc [hl] + xor a + ret + +.asm_24306 + ld a, [wcfa5] + bit 4, a + jr nz, .asm_24314 + bit 0, a + jp nz, .asm_24299 + xor a + ret + +.asm_24314 + ld [hl], $1 + xor a + ret +; 24318 + +Function24318: ; 24318 + xor a + ret +; 2431a + +Function2431a: ; 2431a + ld hl, wcfac + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [hl] + cp $ed + jr nz, Function24329 + ld a, [wcfab] + ld [hl], a + +Function24329: ; 24329 + ld a, [wcfa1] + ld b, a + ld a, [wcfa2] + ld c, a + call GetTileCoord + ld a, [wcfa7] + swap a + and $f + ld c, a + ld a, [MenuSelection2] + ld b, a + xor a + dec b + jr z, .asm_24348 +.asm_24344 + add c + dec b + jr nz, .asm_24344 + +.asm_24348 + ld c, $14 + call AddNTimes + ld a, [wcfa7] + and $f + ld c, a + ld a, [wcfaa] + ld b, a + xor a + dec b + jr z, .asm_2435f +.asm_2435b + add c + dec b + jr nz, .asm_2435b + +.asm_2435f + ld c, a + add hl, bc + ld a, [hl] + cp $ed + jr z, .asm_2436b + ld [wcfab], a + ld [hl], $ed + +.asm_2436b + ld a, l + ld [wcfac], a + ld a, h + ld [wcfad], a + ret +; 24374 diff --git a/engine/pack.asm b/engine/pack.asm index 6b471e045..d5878b7dd 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -70,7 +70,7 @@ Function10067: ; 10067 (4:4067) call Function350c ld a, [wd0e4] ld [wd0df], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wItemsPocketCursor], a ld b, $7 ld c, $3 @@ -98,7 +98,7 @@ Function100a6: ; 100a6 (4:40a6) call Function350c ld a, [wd0e4] ld [wd0e0], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wKeyItemsPocketCursor], a ld b, $3 ld c, $7 @@ -141,7 +141,7 @@ Function100e8: ; 100e8 (4:40e8) call ExitMenu pop hl ret c - ld a, [wcfa9] + ld a, [MenuSelection2] dec a call Function1086b jp [hl] @@ -228,7 +228,7 @@ Function10198: ; 10198 (4:4198) call Function350c ld a, [wd0e4] ld [wd0e1], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wBallsPocketCursor], a ld b, $1 ld c, $5 @@ -301,7 +301,7 @@ Function101c5: ; 101c5 (4:41c5) call ExitMenu pop hl ret c - ld a, [wcfa9] + ld a, [MenuSelection2] dec a call Function1086b jp [hl] @@ -728,7 +728,7 @@ Function104fa: ; 104fa (4:44fa) call Function350c ld a, [wd0e4] ld [wd0df], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wItemsPocketCursor], a ld b, $7 ld c, $3 @@ -756,7 +756,7 @@ Function10539: ; 10539 (4:4539) call Function350c ld a, [wd0e4] ld [wd0e0], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wKeyItemsPocketCursor], a ld b, $3 ld c, $7 @@ -807,7 +807,7 @@ Function105a6: ; 105a6 (4:45a6) call Function350c ld a, [wd0e4] ld [wd0e1], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wBallsPocketCursor], a ld b, $1 ld c, $5 @@ -836,7 +836,7 @@ Function105dc: ; 105dc (4:45dc) call ExitMenu pop hl ret c - ld a, [wcfa9] + ld a, [MenuSelection2] dec a call Function1086b jp [hl] @@ -1013,7 +1013,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) call Function350c ld a, [wd0e4] ld [wd0df], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wItemsPocketCursor], a ret @@ -1029,7 +1029,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) call Function350c ld a, [wd0e4] ld [wd0e0], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wKeyItemsPocketCursor], a ret @@ -1054,7 +1054,7 @@ Jumptable_106d1: ; 106d1 (4:46d1) call Function350c ld a, [wd0e4] ld [wd0e1], a - ld a, [wcfa9] + ld a, [MenuSelection2] ld [wBallsPocketCursor], a ret diff --git a/engine/save.asm b/engine/save.asm index fa9aeda12..338d6bc40 100644 --- a/engine/save.asm +++ b/engine/save.asm @@ -212,7 +212,7 @@ SaveTheGame_yesorno: ; 14baf call LoadMenuTextBox lb bc, 0, 7 call PlaceYesNoBox - ld a, [wcfa9] + ld a, [MenuSelection2] dec a call WriteBackup push af diff --git a/engine/scripting.asm b/engine/scripting.asm index 246314f79..d502a94db 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -515,7 +515,7 @@ Script_interpretmenu2: ; 0x96f30 ld a, [ScriptBank] ld hl, InterpretMenu2 rst FarCall - ld a, [wcfa9] + ld a, [MenuSelection2] jr nc, .ok xor a .ok |