diff options
author | luckytyphlosion <alan.rj.huang@gmail.com> | 2015-12-31 15:24:54 -0500 |
---|---|---|
committer | luckytyphlosion <alan.rj.huang@gmail.com> | 2015-12-31 15:24:54 -0500 |
commit | 94eee4e89ef5c0857599c2951befee9dc709ae85 (patch) | |
tree | 463218b7b459d0f1d90f0e488cd026e7a2da27dc /engine/bank3d/main.asm | |
parent | d3cd6e1e1a64a0093128918f9e02a79dc6d510cb (diff) |
Cleanup with yellow-exclusive banks
Also introduce charmap for $ec (unfilled menu arrow cursor)
Diffstat (limited to 'engine/bank3d/main.asm')
-rw-r--r-- | engine/bank3d/main.asm | 693 |
1 files changed, 0 insertions, 693 deletions
diff --git a/engine/bank3d/main.asm b/engine/bank3d/main.asm deleted file mode 100644 index cc78a114..00000000 --- a/engine/bank3d/main.asm +++ /dev/null @@ -1,693 +0,0 @@ -INCLUDE "engine/battle/common_text.asm" -INCLUDE "engine/battle/link_battle_versus_text.asm" -INCLUDE "engine/battle/unused_stats_functions.asm" -INCLUDE "engine/battle/scroll_draw_trainer_pic.asm" - -Func_f429f:: ; f429f (3d:429f) - coord hl, 0,5 - ld c,$0 -.asm_f42a4 - inc c - ld a,c - cp $9 - ret z - ld d,$5b - push bc - push hl -.asm_f42ad - call Func_f42c2 - dec hl - ld a,d - sub $7 - ld d,a - dec c - jr nz,.asm_f42ad - ld c,$2 - call DelayFrames - pop hl - pop bc - inc hl - jr .asm_f42a4 - -Func_f42c2:: ; f42c2 (3d:f42c2) - push hl - push de - push bc - ld e,$7 -.loop - ld a,d - cp $31 - jr nc,.asm_f42ce - ld a,$7f -.asm_f42ce - ld [hl],a - ld bc,$14 - add hl,bc - inc d - dec e - jr nz,.loop - pop bc - pop de - pop hl - ret - -INCLUDE "engine/battle/decrement_pp.asm" - -ModifyPikachuHappiness:: ; f430a (3d:430a) - ld a, d - cp PIKAHAPPY_GYMLEADER - jr z, .checkanywhereinparty - cp PIKAHAPPY_WALKING - jr z, .checkanywhereinparty - push de - callab IsThisPartymonStarterPikachu_Party - pop de - ret nc - jr .proceed - -.checkanywhereinparty - push de - callab IsStarterPikachuInOurParty - pop de - ret nc - -.proceed - push de - ; Divide [wPikachuHappiness] by 100. Hold the integer part in e. - ld e, $0 - ld a, [wPikachuHappiness] - cp 100 - jr c, .wPikachuHappiness_div_100 - inc e - cp 200 - jr c, .wPikachuHappiness_div_100 - inc e -.wPikachuHappiness_div_100 - ; Get the (d, e) entry from .HappinessChangeTable. - ld c, d - dec c - ld b, $0 - ld hl, .HappinessChangeTable - add hl, bc - add hl, bc - add hl, bc - ld d, $0 - add hl, de - ld a, [hl] - ; If [hl] is positive, take min(0xff, [hl] + [wPikachuHappiness]). - ; If [hl] is negative, take max(0x00, [hl] + [wPikachuHappiness]). - ; Inexplicably, we're using 100 as the threshold for comparison. - cp 100 - ld a, [wPikachuHappiness] - jr nc, .negative - add [hl] - jr nc, .okay - ld a, -1 - jr .okay - -.negative - add [hl] - jr c, .okay - xor a -.okay - ld [wPikachuHappiness], a - - ; Restore d and get the d'th entry in .Moods. - pop de - dec d - ld hl, .Moods - ld e, d - ld d, $0 - add hl, de - ld a, [hl] - ld b, a - ; Modify Pikachu's mood - cp $80 - jr z, .done - ld a, [wPikachuMood] - jr c, .decreased - cp b - jr nc, .done - ld a, [wd49c] - and a - jr nz, .done - jr .update_mood - -.decreased - cp b - jr c, .done -.update_mood - ld a, b - ld [wPikachuMood], a -.done - ret - -.HappinessChangeTable: ; f4385 (3d:4385) - ; Increase - db 5, 3, 2 ; Gained a level - db 5, 3, 2 ; HP restore - db 1, 1, 0 ; Used X item - db 3, 2, 1 ; Challenged Gym Leader - db 1, 1, 0 ; Teach TM/HM - db 2, 1, 1 ; Walking around - ; Decrease - db -3, -3, -5 ; Deposited - db -1, -1, -1 ; Fainted in battle - db -5, -5, -10 ; Fainted due to Poison outside of battle - db -5, -5, -10 ; Unknown (d = 10) - db -10, -10, -20 ; Unknown (d = 11) - -.Moods: ; f43a6 (3d:43a6) - ; Increase - db $8a ; Gained a level - db $83 ; HP restore - db $80 ; Teach TM/HM - db $80 ; Challenged Gym Leader - db $94 ; Unknown (d = 5) - db $80 ; Unknown (d = 6) - ; Decrease - db $62 ; Deposited - db $6c ; Fainted - db $62 ; Unknown (d = 9) - db $6c ; Unknown (d = 10) - db $00 ; Unknown (d = 11) - -; f43b1 (3d:43b1) -RedPicBack:: INCBIN "pic/trainer/redb.pic" -OldManPic:: INCBIN "pic/trainer/oldman.pic" -OakPicBack:: INCBIN "pic/ytrainer/prof.oakb.pic" - -;SECTION "bank3d Yellow Intro",ROMX[$453f],BANK[$3D] - -Func_f453f:: ; f453f (3d:453f) - ld hl,PokemonLogoGraphics - ld de,vChars2 - ld bc,$730 - ld a,BANK(PokemonLogoGraphics) ; redundant because this function is in bank3d - call FarCopyData - ld hl,YellowLogoGraphics+$230 - ld de,vChars0+$fd0 - ld bc,$30 - ld a,BANK(YellowLogoGraphics) - call FarCopyData - ld hl,YellowLogoGraphics+$260 - ld de,vChars1 - ld bc,$400 - ld a,BANK(YellowLogoGraphics) - call FarCopyData - ld hl,YellowLogoGraphics+$660 - ld de,vChars0+$f00 - ld bc,$c0 - ld a,BANK(YellowLogoGraphics) - call FarCopyData - ret - -Func_f4578:: ; f4578 (3d:4578) - coord hl, 2,1 - ld de,Pointer_f45f9 - ld bc,7 << 8 | 16 ; 16x7 (xy) - call CopyScreenArea - ret - -Func_f4585:: ; f4585 (3d:4585) - coord hl, 6,4 - ld de,Pointer_f4673 - ld bc,4 << 8 | 7 ; 7x4 (xy) - call CopyScreenArea - coord hl, 9,8 - ld [hl],$64 - inc hl - ld [hl],$65 - ret - -Func_f459a:: ; f459a (3d:459a) - coord hl, 4,8 - ld de,Pointer_f468f - ld bc,9 << 8 | 12 ; 12x9 (xy) - call CopyScreenArea - coord hl, 16,10 - ld [hl],$96 - coord hl, 16,11 - ld [hl],$9d - coord hl, 16,12 - ld [hl],$a7 - coord hl, 16,13 - ld [hl],$b1 - ld hl,Pointer_f45c7 - ld de,wOAMBuffer - ld bc,$20 - call CopyData - ret - -Pointer_f45c7: ; f45c7 (3d:45c7) - db $60,$40,$f1,$22 - db $60,$48,$f0,$22 - db $68,$40,$f3,$22 - db $68,$48,$f2,$22 - db $60,$60,$f0,$02 - db $60,$68,$f1,$02 - db $68,$60,$f2,$02 - db $68,$68,$f3,$02 - -CopyScreenArea:: ; f45e7 (3d:45e7) -; copy cxb (xy) screen area from de to hl - push bc - push hl -.loop - ld a,[de] - inc de - ld [hli],a - dec c - jr nz,.loop - pop hl - ld bc,$14 - add hl,bc - pop bc - dec b - jr nz,CopyScreenArea - ret - -Pointer_f45f9: ; f45f9 (3d:45f9) -; 16x7 (xy) - db $f4,$f4,$f4,$f4,$f4,$f4,$49,$f4,$72,$30,$f4,$f4,$f4,$f4,$f4,$f4 - db $fd,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$f4,$0d,$0e,$0f - db $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1a,$1b,$1c,$1d,$1e,$1f - db $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f - db $f4,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f - db $f4,$41,$42,$43,$44,$45,$46,$47,$48,$f4,$4a,$4b,$4c,$4d,$4e,$4f - db $f4,$6a,$6b,$6c,$6d,$f4,$f4,$f4,$f4,$f4,$f4,$6e,$6f,$70,$71,$f4 - -Pointer_f4669:: ; f4669 (3d:4669) - db $47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,$5f - -Pointer_f4673:: ; f4673 (3d:4673) -; 7x4 (xy) - db $24,$25,$66,$67,$68,$69,$2a - db $50,$51,$52,$53,$54,$55,$56 - db $57,$58,$59,$5a,$5b,$5c,$5d - db $6d,$5e,$5f,$60,$61,$62,$63 - -Pointer_f468f:: ; f468f (3d:468f) -; 12x9 (xy) - db $80,$81,$82,$83,$00,$00,$00,$00,$84,$85,$86,$87 - db $88,$89,$8a,$8b,$8c,$8d,$8d,$8e,$8f,$8a,$90,$91 - db $00,$92,$93,$8a,$8a,$8a,$8a,$8a,$8a,$94,$95,$00 - db $00,$00,$97,$8a,$8a,$98,$99,$8a,$8a,$9a,$9b,$9c - db $00,$00,$9e,$9f,$a0,$a1,$a2,$a3,$a4,$a5,$a6,$8a - db $00,$a8,$a9,$aa,$8a,$ab,$ac,$8a,$ad,$ae,$af,$b0 - db $00,$b2,$b3,$b4,$8a,$8a,$8a,$8a,$b5,$b6,$b7,$b8 - db $00,$b9,$ba,$8a,$8a,$8a,$8a,$8a,$8a,$bb,$bc,$00 - db $00,$00,$bd,$8a,$8a,$8a,$8a,$8a,$8a,$be,$bf,$00 - -; f46f9 (3d:46f9) -PokemonLogoGraphics: INCBIN "gfx/pokemon_logo.2bpp" -YellowLogoGraphics: INCBIN "gfx/yellow_titlescreen.2bpp" - -INCLUDE "engine/bank3d/link_menu.asm" - -HandleMenuInputDouble:: ; f5a40 (3d:5a40) - xor a - ld [wPartyMenuAnimMonEnabled],a - -HandleMenuInputPokemonSelectionDouble:: ; f5a44 (3d:5a44) - ld a,[H_DOWNARROWBLINKCNT1] - push af - ld a,[H_DOWNARROWBLINKCNT2] - push af ; save existing values on stack - xor a - ld [H_DOWNARROWBLINKCNT1],a ; blinking down arrow timing value 1 - ld a,$06 - ld [H_DOWNARROWBLINKCNT2],a ; blinking down arrow timing value 2 -.loop1 - xor a - ld [wAnimCounter],a ; counter for pokemon shaking animation - call Func_f5ab0 - call JoypadLowSensitivity - ld a,[hJoy5] - and a ; was a key pressed? - jr nz,.keyPressed - pop af - ld [H_DOWNARROWBLINKCNT2],a - pop af - ld [H_DOWNARROWBLINKCNT1],a ; restore previous values - xor a - ld [wMenuWrappingEnabled],a ; disable menu wrapping - ret -.keyPressed - xor a - ld [wCheckFor180DegreeTurn],a - ld a,[hJoy5] - ld b,a - bit 6,a ; pressed Up key? - jr z,.checkIfDownPressed -.upPressed - ld a,[wCurrentMenuItem] ; selected menu item - and a ; already at the top of the menu? - jr z,.checkOtherKeys -.notAtTop - dec a - ld [wCurrentMenuItem],a ; move selected menu item up one space - jr .checkOtherKeys -.checkIfDownPressed - bit 7,a - jr z,.checkOtherKeys -.downPressed - ld a,[wCurrentMenuItem] - inc a - ld c,a - ld a,[wMaxMenuItem] - cp c - jr c,.checkOtherKeys - ld a,c - ld [wCurrentMenuItem],a -.checkOtherKeys - ld a,[wMenuWatchedKeys] - and b ; does the menu care about any of the pressed keys? - jp z,.loop1 -.checkIfAButtonOrBButtonPressed - ld a,[hJoy5] - and A_BUTTON | B_BUTTON - jr z,.skipPlayingSound -.AButtonOrBButtonPressed - ld a, $90 ; (SFX_02_40 - SFX_Headers_02) / 3 - call PlaySound ; play sound -.skipPlayingSound - pop af - ld [H_DOWNARROWBLINKCNT2],a - pop af - ld [H_DOWNARROWBLINKCNT1],a ; restore previous values - ld a,[hJoy5] - ret - -Func_f5ab0:: ; f5ab0 (3d:5ab0) - ld a,[wTopMenuItemY] - and a - jr z,.asm_f5ac0 - coord hl, 0,0 - ld bc,$14 -.loop - add hl,bc - dec a - jr nz,.loop -.asm_f5ac0 - ld a,[wTopMenuItemX] - ld b,$0 - ld c,a - add hl,bc - push hl - ld a,[wLastMenuItem] - and a - jr z,.asm_f5ad5 - ld bc,$28 -.loop2 - add hl,bc - dec a - jr nz,.loop2 -.asm_f5ad5 - ld a,[hl] - cp "▶" - jr nz,.asm_f5ade - ld a,[wTileBehindCursor] - ld [hl],a -.asm_f5ade - pop hl - ld a,[wCurrentMenuItem] - and a - jr z,.asm_f5aec - ld bc,$28 -.loop3 - add hl,bc - dec a - jr nz,.loop3 -.asm_f5aec - ld a,[hl] - cp "▶" - jr z,.asm_f5af4 - ld [wTileBehindCursor],a -.asm_f5af4 - ld a,"▶" - ld [hl],a - ld a,l - ld [wMenuCursorLocation],a - ld a,h - ld [wMenuCursorLocation+1],a - ld a,[wCurrentMenuItem] - ld [wLastMenuItem],a - ret - -Func_f5b06:: ; f5b06 (3d:5b06) - ld hl,wd728 - set 0,[hl] - ld hl,Text_f5b17 - call PrintText - ld hl,Text_f5b28 - jp PrintText - -Text_f5b17:: ; f5b17 (3d:5b17) - TX_FAR _UsedStrengthText ; 2d:417e - db $08 ; asm - ld a,[wcf91] - call PlayCry - call Delay3 - jp TextScriptEnd - -Text_f5b28:: ; f5b28 (3d:5b28) - TX_FAR _CanMoveBouldersText ; 2d:4193 - db "@" - -CheckForForcedBikeSurf:: ; f5b2d (3d:5b2d) - ld hl,wd728 - set 1,[hl] - ld a,[wd732] - bit 5,a - jr nz,.asm_f5b59 - ld a,[wCurMap] - cp SEAFOAM_ISLANDS_5 - ret nz - CheckBothEventsSet EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE - ret z - ld hl,CoordsData_f5b64 - call ArePlayerCoordsInArray - ret nc - ld hl,wd728 - res 1,[hl] - ld hl,CurrentTooFastText - jp PrintText -.asm_f5b59 - ld hl,wd728 - res 1,[hl] - ld hl,CyclingIsFunText - jp PrintText - -CoordsData_f5b64:: ; f5b64 (3d:5b64) - db 11,07 - db $ff - -CurrentTooFastText:: ; f5b67 (3d:5b67) - TX_FAR _CurrentTooFastText ; 2d:41ab - db "@" - -CyclingIsFunText:: ; f5b6c (3d:5b6c) - TX_FAR _CyclingIsFunText ; 2d:41ca - db "@" - -AddItemToInventory_:: ; f5b70 (3d:5b70) - ld a,[wItemQuantity] ; a = item quantity - push af - push bc - push de - push hl - push hl - ld d,50 ; PC box can hold 50 items - ld a,wNumBagItems & $FF - cp l - jr nz,.checkIfInventoryFull - ld a,wNumBagItems >> 8 - cp h - jr nz,.checkIfInventoryFull -; if the destination is the bag - ld d,20 ; bag can hold 20 items -.checkIfInventoryFull - ld a,[hl] - sub d - ld d,a - ld a,[hli] - and a - jr z,.addNewItem -.notAtEndOfInventory - ld a,[hli] - ld b,a ; b = ID of current item in table - ld a,[wcf91] ; a = ID of item being added - cp b ; does the current item in the table match the item being added? - jp z,.increaseItemQuantity ; if so, increase the item's quantity - inc hl -.loop - ld a,[hl] - cp a,$ff ; is it the end of the table? - jr nz, .notAtEndOfInventory -.addNewItem ; add an item not yet in the inventory - pop hl - ld a,d - and a ; is there room for a new item slot? - jr z,.done -; if there is room - inc [hl] ; increment the number of items in the inventory - ld a,[hl] ; the number of items will be the index of the new item - add a - dec a - ld c,a - ld b,0 - add hl,bc ; hl = address to store the item - ld a,[wcf91] - ld [hli],a ; store item ID - ld a,[wItemQuantity] - ld [hli],a ; store item quantity - ld [hl],$ff ; store terminator - jp .success -.increaseItemQuantity ; increase the quantity of an item already in the inventory - ld a,[wItemQuantity] - ld b,a ; b = quantity to add - ld a,[hl] ; a = existing item quantity - add b ; a = new item quantity - cp a,100 - jp c,.storeNewQuantity ; if the new quantity is less than 100, store it -; if the new quantity is greater than or equal to 100, -; try to max out the current slot and add the rest in a new slot - sub a,99 - ld [wItemQuantity],a ; a = amount left over (to put in the new slot) - ld a,d - and a ; is there room for a new item slot? - jr z,.increaseItemQuantityFailed -; if so, store 99 in the current slot and store the rest in a new slot - ld a,99 - ld [hli],a - jp .loop -.increaseItemQuantityFailed - pop hl - and a - jr .done -.storeNewQuantity - ld [hl],a - pop hl -.success - scf -.done - pop hl - pop de - pop bc - pop bc - ld a,b - ld [wItemQuantity],a ; restore the initial value from when the function was called - ret - -; function to remove an item (in varying quantities) from the player's bag or PC box -; INPUT: -; hl = address of inventory (either wNumBagItems or wNumBoxItems) -; [wWhichPokemon] = index (within the inventory) of the item to remove -; [wItemQuantity] = quantity to remove -RemoveItemFromInventory_: ; f5be1 (3d:5be1) - push hl - inc hl - ld a,[wWhichPokemon] ; index (within the inventory) of the item being removed - add a - add l - ld l,a - jr nc,.noCarry - inc h -.noCarry - inc hl - ld a,[wItemQuantity] ; quantity being removed - ld e,a - ld a,[hl] ; a = current quantity - sub e - ld [hld],a ; store new quantity - ld [wMaxItemQuantity],a - and a - jr nz,.skipMovingUpSlots -; if the remaining quantity is 0, -; remove the emptied item slot and move up all the following item slots -.moveSlotsUp - ld e,l - ld d,h - inc de - inc de ; de = address of the slot following the emptied one -.loop ; loop to move up the following slots - ld a,[de] - inc de - ld [hli],a - cp a,$ff - jr nz,.loop -; update menu info - xor a - ld [wListScrollOffset],a - ld [wCurrentMenuItem],a - ld [wBagSavedMenuItem],a - ld [wSavedListScrollOffset],a - pop hl - ld a,[hl] ; a = number of items in inventory - dec a ; decrement the number of items - ld [hl],a ; store new number of items - ld [wListCount],a - cp a,2 - jr c,.done - ld [wMaxMenuItem],a - jr .done -.skipMovingUpSlots - pop hl -.done - ret - -TrainerInfoTextBoxTileGraphics: INCBIN "gfx/trainer_info.2bpp" -TrainerInfoTextBoxTileGraphicsEnd: -BlankLeaderNames: INCBIN "gfx/blank_leader_names.2bpp" -CircleTile: INCBIN "gfx/circle_tile.2bpp" -BadgeNumbersTileGraphics: INCBIN "gfx/badge_numbers.2bpp" - -ReadSuperRodData:: ; f5ea4 (3d:5ea4) - ld a,[wCurMap] - ld c,a - ld hl,FishingSlots -.loop - ld a,[hli] - cp $ff - jr z,.notfound - cp c - jr z,.found - ld de,$8 - add hl,de - jr .loop -.found - call GenerateRandomFishingEncounter - ret -.notfound - ld de,$0 - ret - -GenerateRandomFishingEncounter: ; f5ec1 (3d:5ec1) - call Random - cp $66 - jr c,.asm_f5ed6 - inc hl - inc hl - cp $b2 - jr c,.asm_f5ed6 - inc hl - inc hl - cp $e5 - jr c,.asm_f5ed6 - inc hl - inc hl -.asm_f5ed6 - ld e,[hl] - inc hl - ld d,[hl] - ret - -INCLUDE "data/super_rod.asm" -INCLUDE "engine/bank3d/bank3d_battle.asm" -INCLUDE "engine/items/tm_prices.asm" -INCLUDE "engine/multiply_divide.asm" -INCLUDE "engine/give_pokemon.asm" -INCLUDE "engine/battle/get_trainer_name.asm" -INCLUDE "engine/bank3d/random.asm" -INCLUDE "engine/predefs.asm"
\ No newline at end of file |