diff options
author | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-18 09:03:29 -0400 |
---|---|---|
committer | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-18 09:03:29 -0400 |
commit | d4d3a92e62c985ffad6a198ce389db51ff13cb0d (patch) | |
tree | d9828052a404af6394b3beb0c60f17f55a89158d | |
parent | 9170a9a13efbf06fb7a306f457380a7b4cef5caa (diff) |
Getting closer with HOME
-rw-r--r-- | home.asm | 709 | ||||
-rw-r--r-- | home/audio.asm | 5 | ||||
-rw-r--r-- | home/cry.asm | 88 | ||||
-rw-r--r-- | home/map.asm | 14 | ||||
-rw-r--r-- | main.asm | 28 | ||||
-rw-r--r-- | wram.asm | 19 |
6 files changed, 775 insertions, 88 deletions
@@ -641,7 +641,7 @@ Function33e9:: ; 33e9 (0:33e9) .digits db "0123456789ABCDEF" -Function3404:: +FarPrintText:: ld [wBuffer], a ld a, [hROMBank] push af @@ -1013,11 +1013,710 @@ GetBasePokemonName:: pop hl ret -GetPokemonName:: - dr $367e, $39f9 +GetPokemonName:: ; 367e (0:367e) + ld a, [hROMBank] + push af + push hl + ld a, BANK(PokemonNames) + rst Bankswitch + ld a, [wd151] + dec a + ld hl, PokemonNames + ld e, a + ld d, $0 +rept PKMN_NAME_LENGTH +- 1 + add hl, de +endr + ld de, wStringBuffer1 + push de + ld bc, PKMN_NAME_LENGTH - 1 + call CopyBytes + ld hl, wStringBuffer1 + PKMN_NAME_LENGTH - 1 + ld [hl], "@" + pop de + pop hl + pop af + rst Bankswitch + ret + +GetItemName + push hl + push bc + ld a, [wd151] + cp TM01 + jr nc, .TM + ld [wce60], a + ld a, $4 + ld [wce61], a + call GetName + jr .copied + +.TM + call GetTMHMName +.copied + ld de, wStringBuffer1 + pop bc + pop hl + ret + +GetTMHMName:: ; 36cc (0:36cc) + push hl + push de + push bc + ld a, [wd151] + push af + cp HM01 + push af + jr c, .TM + ld hl, .HMText ; $3721 + ld bc, $2 + jr .copy + +.TM + ld hl, .TMText ; $371e + ld bc, $2 +.copy + ld de, wStringBuffer1 + call CopyBytes + push de + ld a, [wd151] + ld c, a + callab GetTMHMNumber + pop de + pop af + ld a, c + jr c, .not_hm + sub NUM_TMS +.not_hm + ld b, "0" +.mod10 + sub 10 + jr c, .done_mod + inc b + jr .mod10 + +.done_mod + add 10 + push af + ld a, b + ld [de], a + inc de + pop af + ld b, "0" + add b + ld [de], a + inc de + ld a, "@" + ld [de], a + pop af + ld [wd151], a + pop bc + pop de + pop hl + ret + +.TMText db "TM@" +.HMText db "HM@" + +IsHM:: + cp HM01 + jr c, .not_HM + scf + ret + +.not_HM + and a + ret + +IsHMMove:: + ld hl, .HMMoves + ld de, $1 + jp IsInArray + +.HMMoves + db CUT, FLY, SURF, STRENGTH, FLASH, WATERFALL, WHIRLPOOL, $FF + +GetMoveName:: + push hl + ld a, $2 + ld [wce61], a + ld a, [wd151] + ld [wce60], a + call GetName + ld de, wStringBuffer1 + pop hl + ret + +ScrollingMenu:: + call CopyMenuData2 + ld a, [hROMBank] + push af + ld a, BANK(ScrollingMenu_) + rst Bankswitch + call InitScrollingMenu + call ScrollingMenuUpdatePalettes + call ScrollingMenu_ + pop af + rst Bankswitch + ld a, [wMenuJoypad] + ret + +ScrollingMenuUpdatePalettes:: ; 3769 (0:3769) + ld hl, wVramState + bit 0, [hl] + jp nz, UpdateTimePals + jp SetPalettes + +DrawScrollingMenu:: + ld a, [wMenuBorderTopCoord] + dec a + ld b, a + ld a, [wMenuBorderBottomCoord] + sub b + ld d, a + ld a, [wMenuBorderLeftCoord] + dec a + ld c, a + ld a, [wMenuBorderRightCoord] + sub c + ld e, a + push de + call Coord2Tile + pop bc + jp TextBox + +ScrollingMenuJoyTextDelay:: + call DelayFrame + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + call JoyTextDelay + pop af + ld [hInMenu], a + ld a, [hJoyLast] + and $f0 + ld c, a + ld a, [hJoyPressed] + and $f + or c + ld c, a + ret + +HandleStoneQueue:: + ld a, [hROMBank] + push af + call SwitchToMapScriptHeaderBank + call StoneQueueWarpAction + pop bc + ld a, b + rst Bankswitch + ret + +StoneQueueWarpAction:: ; 37b9 (0:37b9) + ld hl, $1 + add hl, de + ld a, [hl] + cp $ff + jr z, .asm_37dc + ld l, a + push hl + call IsAnyMapObjectOnAWarp + pop hl + jr nc, .asm_37dc + ld d, a + ld e, l + call IsThisObjectInTheStoneTable + jr nc, .asm_37dc + call CallMapScript + callba EnableScriptMode + scf + ret + +.asm_37dc + and a + ret + +IsAnyMapObjectOnAWarp:: ; 37de (0:37de) + push de + ld hl, $10 + add hl, de + ld a, [hl] + ld hl, $11 + add hl, de + ld e, [hl] + sub $4 + ld d, a + ld a, e + sub $4 + ld e, a + call IsThisMapObjectOnAWarp + pop de + ret + +IsThisMapObjectOnAWarp:: ; 37f5 (0:37f5) + ld hl, wCurrMapWarpHeaderPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wCurrMapWarpCount] + and a + jr z, .no_warps +.find_warp_loop + push af + ld a, [hl] + cp e + jr nz, .next + inc hl + ld a, [hld] + cp d + jr nz, .next + jr .yes + +.next + ld a, $5 + add l + ld l, a + jr nc, .asm_3814 + inc h +.asm_3814 + pop af + dec a + jr nz, .find_warp_loop +.no_warps + and a + ret + +.yes + pop af + ld d, a + ld a, [wCurrMapWarpCount] + sub d + inc a + scf + ret + +IsThisObjectInTheStoneTable:: ; 3823 (0:3823) + ld hl, $1 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +.asm_382a + ld a, [hli] + cp $ff + jr z, .asm_3840 + cp d + jr nz, .asm_383b + ld a, [hli] + cp e + jr nz, .asm_383c + ld a, [hli] + ld h, [hl] + ld l, a + jr .asm_3842 + +.asm_383b + inc hl +.asm_383c + inc hl + inc hl + jr .asm_382a + +.asm_3840 + and a + ret + +.asm_3842 + scf + ret + +CheckTrainerBattle2:: + ld a, [hROMBank] + push af + call SwitchToMapScriptHeaderBank + call CheckTrainerBattle + pop bc + ld a, b + rst Bankswitch + ret -PlayCry:: - dr $39f9, $3ade +CheckTrainerBattle:: ; 3851 (0:3851) + ld a, $2 + ld de, wMap2Object +.asm_3856 + push af + push de + ld hl, $1 + add hl, de + ld a, [hl] + and a + jr z, .asm_389b + ld hl, $8 + add hl, de + ld a, [hl] + and $f + cp $2 + jr nz, .asm_389b + ld hl, MBC3SRamEnable + add hl, de + ld a, [hl] + cp $ff + jr z, .asm_389b + call GetObjectStruct + call FacingPlayerDistance_bc + jr nc, .asm_389b + ld hl, $9 + add hl, de + ld a, [hl] + cp b + jr c, .asm_389b + push bc + push de + ld hl, $a + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld e, [hl] + inc hl + ld d, [hl] + ld b, $2 + call EventFlagAction + ld a, c + pop de + pop bc + and a + jr z, .asm_38aa +.asm_389b + pop de + ld hl, $10 + add hl, de + ld d, h + ld e, l + pop af + inc a + cp $10 + jr nz, .asm_3856 + xor a + ret + +.asm_38aa + pop de + pop af + ld [hLastTalked], a + ld a, b + ld [wcf2a], a + ld a, c + ld [wcf2b], a + jr continue_trainer_function + +TalkToTrainer:: + ld a, $1 + ld [wcf2a], a + ld a, $ff + ld [wcf2b], a +continue_trainer_function + call GetMapScriptHeaderBank + ld [wcf29], a + ld a, [hLastTalked] + call GetMapObject + ld hl, $a + add hl, bc + ld a, [wcf29] + call GetFarHalfword + ld de, wcf2c + ld bc, $d + ld a, [wcf29] + call FarCopyBytes + xor a + ld [wcf38], a + scf + ret + +FacingPlayerDistance_bc:: ; 38e9 (0:38e9) + push de + call FacingPlayerDistance + ld b, d + ld c, e + pop de + ret + +FacingPlayerDistance:: ; 38f1 (0:38f1) + ld hl, $10 + add hl, bc + ld d, [hl] + ld hl, $11 + add hl, bc + ld e, [hl] + ld a, [wPlayerStandingMapX] + cp d + jr z, .asm_3909 + ld a, [wPlayerStandingMapY] + cp e + jr z, .asm_391d + and a + ret + +.asm_3909 + ld a, [wPlayerStandingMapY] + sub e + jr z, .asm_3937 + jr nc, .asm_3918 + cpl + inc a + ld d, a + ld e, $4 + jr .asm_392f + +.asm_3918 + ld d, a + ld e, $0 + jr .asm_392f + +.asm_391d + ld a, [wPlayerStandingMapX] + sub d + jr z, .asm_3937 + jr nc, .asm_392c + cpl + inc a + ld d, a + ld e, $8 + jr .asm_392f + +.asm_392c + ld d, a + ld e, $c +.asm_392f + call GetSpriteDirection + cp e + jr nz, .asm_3937 + scf + ret + +.asm_3937 + and a + ret + +CheckTrainerFlag:: + push bc + ld hl, $1 + add hl, bc + ld a, [hl] + call GetMapObject + ld hl, $a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + call GetMapScriptHeaderBank + call GetFarHalfword + ld d, h + ld e, l + push de + ld b, $2 + call EventFlagAction + pop de + ld a, c + and a + pop bc + ret + +PrintWinLossText:: + ld a, [wBattleType] + cp $1 + jr which_battle_end_text + +PrintWinText:: + ld hl, wWinTextPointer + jr continue_battle_end_text + +which_battle_end_text + ld a, [wcfe9] + ld hl, wWinTextPointer + and a + jr z, continue_battle_end_text + ld hl, wLossTextPointer +continue_battle_end_text + ld a, [hli] + ld h, [hl] + ld l, a + call GetMapScriptHeaderBank + call FarPrintText + call WaitBGMap + call WaitPressAorB_BlinkCursor + ret + +DrawBattleHPBar:: + push hl + push de + push bc + ld a, $60 + ld [hli], a + ld a, $61 + ld [hli], a + push hl + ld a, $62 +.asm_3990 + ld [hli], a + dec d + jr nz, .asm_3990 + ld a, $6b + add b + ld [hl], a + pop hl + ld a, e + and a + jr nz, .asm_39a3 + ld a, c + and a + jr z, .asm_39b6 + ld e, $1 +.asm_39a3 + ld a, e + sub $8 + jr c, .asm_39b2 + ld e, a + ld a, $6a + ld [hli], a + ld a, e + and a + jr z, .asm_39b6 + jr .asm_39a3 + +.asm_39b2 + ld a, $62 + add e + ld [hl], a +.asm_39b6 + pop bc + pop de + pop hl + ret + +PrepMonFrontpic:: + ld a, $1 + ld [wcf3b], a +PrepMonFrontpic_:: + ld a, [wd004] + and a + jr z, .not_pokemon + cp EGG + jr z, .egg + cp NUM_POKEMON + 1 + jr nc, .not_pokemon +.egg + push hl + ld de, $9000 + predef GetFrontpic + pop hl + xor a + ld [hGraphicStartTile], a + lb bc, 7, 7 + predef PlaceGraphic + xor a + ld [wcf3b], a + ret + +.not_pokemon + xor a + ld [wcf3b], a + inc a + ld [wd004], a + ret + +INCLUDE "home/cry.asm" + +PrintLevel:: ; 3a50 + ld a, [wd02a] + ld [hl], $6e + inc hl + ld c, $2 + cp MAX_LEVEL + jr c, Print8BitNumRightAlign + dec hl + inc c + jr Print8BitNumRightAlign + +PrintLevel_Force3Digits:: + ld [hl], $6e + inc hl + ld c, $3 +Print8BitNumRightAlign:: + ld [wd151], a + ld de, wd151 + ld b, PRINTNUM_RIGHTALIGN | 1 + jp PrintNum + +Function3a70:: + ld hl, wd149 + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ret + +GetBaseData:: + push bc + push de + push hl + ld a, [hROMBank] + push af + ld a, BANK(BaseData) ; $14 + rst Bankswitch + ld a, [wce60] + cp EGG + jr z, .egg + dec a + ld bc, $20 + ld hl, BaseData ; $5b0b + call AddNTimes + ld de, wd120 + ld bc, $20 + call CopyBytes + jr .asm_3ab3 + +.egg + ld de, UnknownEggPic ; $7a83 + ln b, 5, 5 + ld hl, wd131 + ld [hl], b + ld hl, wd132 + ld [hl], e + inc hl + ld [hl], d + inc hl + ld [hl], e + inc hl + ld [hl], d + jr .asm_3ab3 + +.asm_3ab3 + ld a, [wce60] + ld [wd120], a + pop af + rst Bankswitch + pop hl + pop de + pop bc + ret + +GetCurNick:: + ld a, [wd005] + ld hl, wPartyMon1Nickname + push hl + push bc + call SkipNames + ld de, wStringBuffer1 + push de + ld bc, $b + call CopyBytes + pop de + callab CheckNickErrors + pop bc + pop hl + ret PrintBCDNumber:: dr $3ade, $3d4f diff --git a/home/audio.asm b/home/audio.asm index 8acbc14b..d868b4b7 100644 --- a/home/audio.asm +++ b/home/audio.asm @@ -1,5 +1,8 @@ DisableAudio:: - dr $3d4f, $3e24 + dr $3d4f, $3de4 + +Function3de4:: + dr $3de4, $3e24 PlaySFX:: dr $3e24, $3e56 diff --git a/home/cry.asm b/home/cry.asm index aea7af03..d4219d07 100644 --- a/home/cry.asm +++ b/home/cry.asm @@ -1,108 +1,74 @@ -PlayStereoCry:: ; 37b6 +PlayStereoCry:: ; 39f0 (0:39f0) push af - ld a, 1 + ld a, $1 ld [wStereoPanningMask], a pop af - call _PlayCry - call WaitSFX - ret -; 37c4 - -PlayStereoCry2:: ; 37c4 -; Don't wait for the cry to end. -; Used during pic animations. - push af - ld a, 1 - ld [wStereoPanningMask], a - pop af - jp _PlayCry -; 37ce - -PlayCry:: ; 37ce - call PlayCry2 - call WaitSFX - ret -; 37d5 + jr continue_cry_fn -PlayCry2:: ; 37d5 -; Don't wait for the cry to end. +PlayCry:: ; 39f9 (0:39f9) push af xor a ld [wStereoPanningMask], a - ld [CryTracks], a + ld [wCryTracks], a pop af - call _PlayCry - ret -; 37e2 - -_PlayCry:: ; 37e2 +continue_cry_fn push hl push de push bc - call GetCryIndex - jr c, .done - + jr c, .asm_3a12 ld e, c ld d, b - call PlayCryHeader - -.done + call Function3de4 + call WaitSFX +.asm_3a12 pop bc pop de pop hl ret -; 37f3 - -LoadCryHeader:: ; 37f3 -; Load cry header bc. +LoadCryHeader:: call GetCryIndex ret c - ld a, [hROMBank] push af - ld a, BANK(CryHeaders) + ld a, $3c rst Bankswitch - - ld hl, CryHeaders -rept 6 + ld hl, $6747 + add hl, bc + add hl, bc + add hl, bc + add hl, bc + add hl, bc add hl, bc -endr - ld e, [hl] inc hl ld d, [hl] inc hl - ld a, [hli] - ld [CryPitch], a + ld [wCryPitch], a ld a, [hli] - ld [CryPitch + 1], a + ld [wCryPitch + 1], a ld a, [hli] - ld [CryLength], a + ld [wCryLength], a ld a, [hl] - ld [CryLength + 1], a - + ld [wCryLength + 1], a pop af rst Bankswitch and a ret -; 381e -GetCryIndex:: ; 381e +GetCryIndex:: ; 3a41 (0:3a41) and a - jr z, .no + jr z, .asm_3a4e cp NUM_POKEMON + 1 - jr nc, .no - + jr nc, .asm_3a4e dec a ld c, a - ld b, 0 + ld b, $0 and a ret -.no +.asm_3a4e scf ret -; 382d diff --git a/home/map.asm b/home/map.asm index e5063e42..ac5cf541 100644 --- a/home/map.asm +++ b/home/map.asm @@ -516,11 +516,11 @@ Function22c1:: ; 22c1 (0:22c1) ld a, [wPlayerStandingMapX] sub $4 ld d, a - ld a, [wd945] + ld a, [wCurrMapWarpCount] and a ret z ld c, a - ld hl, wd946 + ld hl, wCurrMapWarpHeaderPointer ld a, [hli] ld h, [hl] ld l, a @@ -551,7 +551,7 @@ Function22c1:: ; 22c1 (0:22c1) pop hl call Function22fe ret nc - ld a, [wd945] + ld a, [wCurrMapWarpCount] inc a sub c ld c, a @@ -576,7 +576,7 @@ Function2302:: ; 2302 (0:2302) Function230f:: ; 230f (0:230f) push bc - ld hl, wd946 + ld hl, wCurrMapWarpHeaderPointer ld a, [hli] ld h, [hl] ld l, a @@ -829,11 +829,11 @@ ReadMapCallbacks:: ; 24a2 (0:24a2) ReadWarps:: ; 24b9 (0:24b9) ld a, [hli] ld c, a - ld [wd945], a + ld [wCurrMapWarpCount], a ld a, l - ld [wd946], a + ld [wCurrMapWarpHeaderPointer], a ld a, h - ld [wd947], a + ld [wCurrMapWarpHeaderPointer + 1], a ld a, c and a ret z @@ -26,7 +26,9 @@ GameInit:: ; 6545 ReanchorBGMap_NoOAMUpdate:: ; 6551 dr $6551, $65cb LoadFonts_NoOAMUpdate:: ; 65cb - dr $65cb, $67bd + dr $65cb, $677e +CheckNickErrors:: ; 677e + dr $677e, $67bd Multiply_:: ; 67bd dr $67bd, $681d Divide_:: ; 681d @@ -40,7 +42,9 @@ GameInit:: ; 650b ReanchorBGMap_NoOAMUpdate:: ; 6517 dr $6517, $6591 LoadFonts_NoOAMUpdate:: ; 6591 - dr $6591, $6783 + dr $6591, $6744 +CheckNickErrors:: ; 6744 + dr $6744, $6783 Multiply_:: ; 6783 dr $6783, $67e3 Divide_:: ; 67e3 @@ -74,7 +78,9 @@ ReceiveItem_:: TossItem_:: dr $d21a, $d251 CheckItem_:: - dr $d251, $d434 + dr $d251, $d414 +GetTMHMNumber:: + dr $d414, $d434 CheckTossableItem_:: dr $d434, $e7a6 DoItemEffect_:: @@ -88,7 +94,9 @@ ReceiveItem_:: TossItem_:: dr $d218, $d24f CheckItem_:: - dr $d24f, $d432 + dr $d24f, $d412 +GetTMHMNumber:: + dr $d412, $d432 CheckTossableItem_:: dr $d432, $e7a4 DoItemEffect_:: @@ -152,7 +160,11 @@ PushWindow_:: ExitMenu_:: dr $24307, $24395 InitVerticalMenuCursor_:: - dr $24395, $28000 + dr $24395, $244d7 +InitScrollingMenu:: + dr $244d7, $244f3 +ScrollingMenu_:: + dr $244f3, $28000 SECTION "banka", DATA, BANK[$a] dr $28000, $2c000 @@ -190,7 +202,11 @@ SECTION "bank13", DATA, BANK[$13] dr $4c000, $50000 SECTION "bank14", DATA, BANK[$14] - dr $50000, $54000 + dr $50000, $51b0b +BaseData:: ; 51b0b + dr $51b0b, $53a83 +UnknownEggPic:: ; 53a83 + dr $53a83, $54000 SECTION "bank15", DATA, BANK[$15] dr $54000, $58000 @@ -2287,19 +2287,19 @@ wcf28:: ds 1 ; cf28 wcf29:: ds 1 ; cf29 wcf2a:: ds 1 ; cf2a wcf2b:: ds 1 ; cf2b +wTempTrainerHeader:: wcf2c:: ds 1 ; cf2c wcf2d:: ds 1 ; cf2d wcf2e:: ds 1 ; cf2e wcf2f:: ds 1 ; cf2f wcf30:: ds 1 ; cf30 wcf31:: ds 1 ; cf31 -wcf32:: ds 1 ; cf32 -wcf33:: ds 1 ; cf33 -wcf34:: ds 1 ; cf34 -wcf35:: ds 1 ; cf35 +wWinTextPointer:: dw ; cf32 +wLossTextPointer:: dw ; cf34 wcf36:: ds 1 ; cf36 wcf37:: ds 1 ; cf37 wcf38:: ds 1 ; cf38 +wTempTrainerHeaderEnd:: wcf39:: ds 1 ; cf39 wcf3a:: ds 1 ; cf3a wcf3b:: ds 1 ; cf3b @@ -2665,13 +2665,15 @@ wd115:: ds 1 ; d115 wd116:: ds 1 ; d116 wd117:: ds 1 ; d117 wd118:: ds 1 ; d118 -wd119:: ds 1 ; d119 +wBattleType:: ds 1 ; d119 wd11a:: ds 1 ; d11a wd11b:: ds 1 ; d11b wd11c:: ds 1 ; d11c wTrainerClass:: ds 1 ; d11d wd11e:: ds 1 ; d11e wd11f:: ds 1 ; d11f + +wBaseData:: wd120:: ds 1 ; d120 wd121:: ds 1 ; d121 wd122:: ds 1 ; d122 @@ -2704,6 +2706,8 @@ wd13c:: ds 1 ; d13c wd13d:: ds 1 ; d13d wd13e:: ds 1 ; d13e wd13f:: ds 1 ; d13f +wBaseDataEnd:: + wd140:: ds 1 ; d140 wd141:: ds 1 ; d141 wd142:: ds 1 ; d142 @@ -3720,9 +3724,8 @@ wd940:: ds 1 ; d940 wCurrentMapTriggerPointer:: dw ; d941 wd943:: ds 1 ; d943 wd944:: ds 1 ; d944 -wd945:: ds 1 ; d945 -wd946:: ds 1 ; d946 -wd947:: ds 1 ; d947 +wCurrMapWarpCount:: ds 1 ; d945 +wCurrMapWarpHeaderPointer:: dw ; d946 wd948:: ds 1 ; d948 wd949:: ds 1 ; d949 wd94a:: ds 1 ; d94a |