summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-05-24 18:54:06 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-05-24 18:54:06 -0400
commit87b20762d539888b031aba92b574108f5f817815 (patch)
tree6a431083c23d83935f920ea0360574be365796b5 /engine
parent219eddf056933c6e5f06903caa73d49de3118a60 (diff)
Numerous changes (see below)
* Fix build errors from previous commit * Fix predef text pointers * Disassemble hidden object data and additional accessory functions
Diffstat (limited to 'engine')
-rw-r--r--engine/bank3c.asm78
-rwxr-xr-xengine/game_corner_slots2.asm4
-rwxr-xr-xengine/hidden_object_functions17.asm109
-rwxr-xr-xengine/hidden_object_functions18.asm30
-rwxr-xr-xengine/overworld/hidden_items.asm17
5 files changed, 121 insertions, 117 deletions
diff --git a/engine/bank3c.asm b/engine/bank3c.asm
index cadfe1cf..f5f9d696 100644
--- a/engine/bank3c.asm
+++ b/engine/bank3c.asm
@@ -157,7 +157,7 @@ INCLUDE "engine/overworld/advance_player_sprite.asm"
ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
; Reset player status on blackout.
xor a
- ld [wd435],a
+ ld [wd435], a
xor a ; gamefreak copypasting functions (double xor a)
ld [wBattleResult], a
ld [wWalkBikeSurfState], a
@@ -204,33 +204,33 @@ ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
predef_jump HealParty
Func_f02da:: ; f02da (3c:42da)
- ld a,[wCurMap]
+ ld a, [wCurMap]
cp VERMILION_GYM ; ??? new thing about verm gym?
- jr z,.asm_f02ee
- ld c,a
- ld hl,Pointer_f02fa
+ jr z, .asm_f02ee
+ ld c, a
+ ld hl, Pointer_f02fa
.asm_f02e5
- ld a,[hli]
+ ld a, [hli]
cp c
- jr z,.asm_f02f4
- cp a,$ff
- jr nz,.asm_f02e5
+ jr z, .asm_f02f4
+ cp a, $ff
+ jr nz, .asm_f02e5
ret
.asm_f02ee
- ld hl,wd126
- set 6,[hl]
+ ld hl, wd126
+ set 6, [hl]
ret
.asm_f02f4
- ld hl,wd126
- set 5,[hl]
+ ld hl, wd126
+ set 5, [hl]
ret
Pointer_f02fa:: ; f02fa (3c:42fa)
- db $cf,$d0,$d1,$d2,$d3,$d4
- db $d5,$e9,$ea,$eb,$d6,$d7
- db $d8,$a5,$a6,$87,$c7,$ca
- db $c6,$6c,$c2,$71,$f5,$f6
- db $f7,$ff
+ db $cf, $d0, $d1, $d2, $d3, $d4
+ db $d5, $e9, $ea, $eb, $d6, $d7
+ db $d8, $a5, $a6, $87, $c7, $ca
+ db $c6, $6c, $c2, $71, $f5, $f6
+ db $f7, $ff
BeachHouse_GFX:: ; f0314 (3c:4314)
INCBIN "gfx/tilesets/beachhouse.2bpp"
@@ -242,40 +242,44 @@ Func_f0a54:: ; f0a54 (3c:4a54)
ret
Func_f0a55:: ; f0a55 (3c:4a55)
- ld hl,Pointer_f0a76 ; 3c:4a76
+ ld hl, Pointer_f0a76 ; 3c:4a76
.loop
- ld a,[hli]
- cp a,$ff
+ ld a, [hli]
+ cp a, $ff
ret z
- ld b,a
- ld a,[wCurMap]
+ ld b, a
+ ld a, [wCurMap]
cp b
- jr z,.asm_f0a68
+ jr z, .asm_f0a68
inc hl
inc hl
inc hl
jr .loop
.asm_f0a68
- ld a,[hli]
- ld c,a
- ld b,$0
- ld a,[hli]
- ld h,[hl]
- ld l,a
- ld de,wMissableObjectList
+ ld a, [hli]
+ ld c, a
+ ld b, $0
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wMissableObjectList
call CopyData
ret
Pointer_f0a76:: ; f0a76 (3c:4a76)
- db $27,$07,$7b,$4a,$ff
- db $01,$ec,$02,$ed,$03,$ee,$ff
+ db $27, $07, $7b, $4a, $ff
+ db $01, $ec, $02, $ed, $03, $ee, $ff
- dr $f0a82,$f220e
+ dr $f0a82, $f220e
BeachHouse_h: ; f220e (3c:620e)
;INCLUDE "data/mapHeaders/beach_house.asm"
- dr $f220e,$f24ae
+ dr $f220e, $f24ae
Func_f24ae: ; f24ae (3c:64ae)
- dr $f24ae,$f25f8
+ dr $f24ae, $f25f8
CheckForHiddenObject:: ; f25f8 (3c:65f8)
- dr $f25f8,$f4000 \ No newline at end of file
+ dr $f25f8, $f268d
+INCLUDE "data/hidden_objects.asm"
+ dr $f2cd0, $f2d0c
+Func_f2d0c:
+ dr $f2d0c, $f2db8
diff --git a/engine/game_corner_slots2.asm b/engine/game_corner_slots2.asm
index 1bcbefb1..3f7c3f71 100755
--- a/engine/game_corner_slots2.asm
+++ b/engine/game_corner_slots2.asm
@@ -6,13 +6,13 @@ AbleToPlaySlotsCheck: ; 2fdfd (b:7dfd)
predef GetQuantityOfItemInBag
ld a, b
and a
- ld b, GameCornerCoinCaseText_id ; - TextPredefs) / 2 + 1
+ ld b, (GameCornerCoinCaseText_id - TextPredefs) / 2 + 1
jr z, .printCoinCaseRequired
ld hl, wPlayerCoins
ld a, [hli]
or [hl]
jr nz, .done ; able to play
- ld b, GameCornerNoCoinsText_id ; - TextPredefs) / 2 + 1
+ ld b, (GameCornerNoCoinsText_id - TextPredefs) / 2 + 1
.printCoinCaseRequired
call EnableAutoTextBoxDrawing
ld a, b
diff --git a/engine/hidden_object_functions17.asm b/engine/hidden_object_functions17.asm
index 90b26578..41f20218 100755
--- a/engine/hidden_object_functions17.asm
+++ b/engine/hidden_object_functions17.asm
@@ -1,4 +1,4 @@
-PrintRedsNESText: ; 5db79 (17:5b79)
+PrintRedsNESText: ; 5dbae (17:5bae)
call EnableAutoTextBoxDrawing
tx_pre_jump RedBedroomSNESText
@@ -22,7 +22,10 @@ Route15GateLeftBinoculars: ; 5db8f (17:5b8f)
ld a, ARTICUNO
ld [wcf91], a
call PlayCry
- jp DisplayMonFrontSpriteInBox
+ call DisplayMonFrontSpriteInBox
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ret
Route15UpstairsBinocularsText: ; 5dba8 (17:5ba8)
TX_FAR _Route15UpstairsBinocularsText
@@ -52,6 +55,30 @@ KabutopsFossilText: ; 5dbd4 (17:5bd4)
TX_FAR _KabutopsFossilText
db "@"
+FanClubPicture1: ; 5dbad (17:5c12)
+ ld a, RAPIDASH
+ ld [wcf91], a
+ call DisplayMonFrontSpriteInBox
+ call EnableAutoTextBoxDrawing
+ tx_pre FanClubPicture1Text
+ ret
+
+FanClubPicture1Text: ; 5dbbe (17:5bbe)
+ TX_FAR _FanClubPicture1Text
+ db "@"
+
+FanClubPicture2: ; 5dbad (17:5c28)
+ ld a, FEAROW
+ ld [wcf91], a
+ call DisplayMonFrontSpriteInBox
+ call EnableAutoTextBoxDrawing
+ tx_pre FanClubPicture2Text
+ ret
+
+FanClubPicture2Text: ; 5dc39 (17:5c39)
+ TX_FAR _FanClubPicture2Text
+ db "@"
+
DisplayMonFrontSpriteInBox: ; 5dbd9 (17:5bd9)
; Displays a pokemon's front sprite in a pop-up window.
; [wcf91] = pokemon interal id number
@@ -110,8 +137,7 @@ LinkCableHelp: ; 5dc29 (17:5c29)
ld hl, wd730
set 6, [hl]
coord hl, 0, 0
- ld b, $8
- ld c, $d
+ lb bc, $8, $d
call TextBoxBorder
coord hl, 2, 2
ld de, HowToLinkText
@@ -339,53 +365,17 @@ GymTrashScript: ; 5ddfc (17:5dfc)
.openFirstLock
; Next can is trying for the second switch.
SetEvent EVENT_1ST_LOCK_OPENED
-
- ld hl, GymTrashCans
- ld a, [wGymTrashCanIndex]
- ; * 5
- ld b, a
- add a
- add a
- add b
-
- ld d, 0
- ld e, a
- add hl, de
- ld a, [hli]
-
-; There is a bug in this code. It should calculate a value in the range [0, 3]
-; but if the mask and random number don't have any 1 bits in common, then
-; the result of the AND will be 0. When 1 is subtracted from that, the value
-; will become $ff. This will result in 255 being added to hl, which will cause
-; hl to point to one of the zero bytes that pad the end of the ROM bank.
-; Trash can 0 was intended to be able to have the second lock only when the
-; first lock was in trash can 1 or 3. However, due to this bug, trash can 0 can
-; have the second lock regardless of which trash can had the first lock.
-
- ld [hGymTrashCanRandNumMask], a
- push hl
- call Random
- swap a
- ld b, a
- ld a, [hGymTrashCanRandNumMask]
- and b
- dec a
- pop hl
-
- ld d, 0
- ld e, a
- add hl, de
- ld a, [hl]
- and $f
- ld [wSecondLockTrashCanIndex], a
-
+ callab Func_f2d0c
tx_pre_id VermilionGymTrashSuccesText1
jr .done
.trySecondLock
- ld a, [wSecondLockTrashCanIndex]
- ld b, a
ld a, [wGymTrashCanIndex]
+ ld b, a
+ ld a, [wSecondLockTrashCanIndex]
+ cp b
+ jr z, .openSecondLock
+ ld a, [wSecondLockTrashCanIndex + 1]
cp b
jr z, .openSecondLock
@@ -413,25 +403,24 @@ GymTrashScript: ; 5ddfc (17:5dfc)
GymTrashCans: ; 5de7d (17:5e7d)
; byte 0: mask for random number
; bytes 1-4: indices of the trash cans that can have the second lock
-; (but see the comment above explaining a bug regarding this)
; Note that the mask is simply the number of valid trash can indices that
-; follow. The remaining bytes are filled with 0 to pad the length of each entry
+; follow. The remaining bytes are filled with -1 to pad the length of each entry
; to 5 bytes.
- db 2, 1, 3, 0, 0 ; 0
- db 3, 0, 2, 4, 0 ; 1
- db 2, 1, 5, 0, 0 ; 2
- db 3, 0, 4, 6, 0 ; 3
+ db 2, 1, 3, -1, -1 ; 0
+ db 3, 0, 2, 4, -1 ; 1
+ db 2, 1, 5, -1, -1 ; 2
+ db 3, 0, 4, 6, -1 ; 3
db 4, 1, 3, 5, 7 ; 4
- db 3, 2, 4, 8, 0 ; 5
- db 3, 3, 7, 9, 0 ; 6
+ db 3, 2, 4, 8, -1 ; 5
+ db 3, 3, 7, 9, -1 ; 6
db 4, 4, 6, 8, 10 ; 7
- db 3, 5, 7, 11, 0 ; 8
- db 3, 6, 10, 12, 0 ; 9
+ db 3, 5, 7, 11, -1 ; 8
+ db 3, 6, 10, 12, -1 ; 9
db 4, 7, 9, 11, 13 ; 10
- db 3, 8, 10, 14, 0 ; 11
- db 2, 9, 13, 0, 0 ; 12
- db 3, 10, 12, 14, 0 ; 13
- db 2, 11, 13, 0, 0 ; 14
+ db 3, 8, 10, 14, -1 ; 11
+ db 2, 9, 13, -1, -1 ; 12
+ db 3, 10, 12, 14, -1 ; 13
+ db 2, 11, 13, -1, -1 ; 14
; 5dec8
VermilionGymTrashSuccesText1: ; 5dec8 (17:5ec8)
diff --git a/engine/hidden_object_functions18.asm b/engine/hidden_object_functions18.asm
index 9d19dd7c..443f8369 100755
--- a/engine/hidden_object_functions18.asm
+++ b/engine/hidden_object_functions18.asm
@@ -73,35 +73,35 @@ PrintBenchGuyText: ; 6245d (18:645d)
; format: db map id, player sprite facing direction, text id of PredefTextIDPointerTable
BenchGuyTextPointers: ; 6247e (18:647e)
db VIRIDIAN_POKECENTER, SPRITE_FACING_LEFT
- db $11 ; (ViridianCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre ViridianCityPokecenterBenchGuyText
db PEWTER_POKECENTER, SPRITE_FACING_LEFT
- db $12 ; (PewterCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre PewterCityPokecenterBenchGuyText
db CERULEAN_POKECENTER, SPRITE_FACING_LEFT
- db $13 ; (CeruleanCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre CeruleanCityPokecenterBenchGuyText
db LAVENDER_POKECENTER, SPRITE_FACING_LEFT
- db $14 ; (LavenderCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre LavenderCityPokecenterBenchGuyText
db VERMILION_POKECENTER, SPRITE_FACING_LEFT
- db $15 ; (VermilionCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre VermilionCityPokecenterBenchGuyText
db CELADON_POKECENTER, SPRITE_FACING_LEFT
- db $16 ; (CeladonCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre CeladonCityPokecenterBenchGuyText
db CELADON_HOTEL, SPRITE_FACING_LEFT
- db $17 ; (CeladonCityHotelText_id - TextPredefs) / 2 + 1
+ db_tx_pre CeladonCityHotelText
db FUCHSIA_POKECENTER, SPRITE_FACING_LEFT
- db $18 ; (FuchsiaCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre FuchsiaCityPokecenterBenchGuyText
db CINNABAR_POKECENTER, SPRITE_FACING_LEFT
- db $19 ; (CinnabarIslandPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre CinnabarIslandPokecenterBenchGuyText
db SAFFRON_POKECENTER, SPRITE_FACING_LEFT
- db $1a ; (SaffronCityPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre SaffronCityPokecenterBenchGuyText
db MT_MOON_POKECENTER, SPRITE_FACING_LEFT
- db $1b ; (MtMoonPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre MtMoonPokecenterBenchGuyText
db ROCK_TUNNEL_POKECENTER, SPRITE_FACING_LEFT
- db $1c ; (RockTunnelPokecenterBenchGuyText_id - TextPredefs) / 2 + 1
+ db_tx_pre RockTunnelPokecenterBenchGuyText
db SAFARI_ZONE_REST_HOUSE_2,SPRITE_FACING_LEFT
- db $1d
+ db_tx_pre UnusedBenchGuyText1
db SAFARI_ZONE_REST_HOUSE_3,SPRITE_FACING_LEFT
- db $1e
+ db_tx_pre UnusedBenchGuyText2
db SAFARI_ZONE_REST_HOUSE_4,SPRITE_FACING_LEFT
- db $1f
+ db_tx_pre UnusedBenchGuyText3
db $FF
ViridianCityPokecenterBenchGuyText: ; 624a3 (18:64a3)
diff --git a/engine/overworld/hidden_items.asm b/engine/overworld/hidden_items.asm
index f7f81070..39bb385d 100755
--- a/engine/overworld/hidden_items.asm
+++ b/engine/overworld/hidden_items.asm
@@ -9,7 +9,7 @@ HiddenItems: ; 76688 (1d:6688)
predef FlagActionPredef
ld a, c
and a
- ret nz
+ jr nz, .asm_75fa5
call EnableAutoTextBoxDrawing
ld a, 1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
@@ -18,6 +18,11 @@ HiddenItems: ; 76688 (1d:6688)
call GetItemName
tx_pre_jump FoundHiddenItemText
+.asm_75fa5
+ ld a, $ff
+ ld [hItemAlreadyFound], a
+ ret
+
INCLUDE "data/hidden_item_coords.asm"
FoundHiddenItemText: ; 7675b (1d:675b)
@@ -54,7 +59,7 @@ HiddenCoins: ; 76799 (1d:6799)
predef GetQuantityOfItemInBag
ld a, b
and a
- ret z
+ jr z, .asm_760ce
ld hl, HiddenCoinCoords
call FindHiddenItemOrCoinsIndex
ld [wHiddenItemOrCoinsIndex], a
@@ -65,7 +70,7 @@ HiddenCoins: ; 76799 (1d:6799)
predef FlagActionPredef
ld a, c
and a
- ret nz
+ jr nz, .asm_760ce
xor a
ld [hUnusedCoinsByte], a
ld [hCoins], a
@@ -79,6 +84,12 @@ HiddenCoins: ; 76799 (1d:6799)
cp 40
jr z, .bcd20
jr .bcd100
+
+.asm_760ce
+ ld a, $ff
+ ld [hItemAlreadyFound], a
+ ret
+
.bcd10
ld a, $10
ld [hCoins + 1], a