Accidentally committed .orig files from merge dff0cdeb.

This commit is contained in:
yenatch 2014-09-23 15:07:38 -07:00
parent a81487e9c6
commit 070c964964
3 changed files with 0 additions and 9891 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,647 +0,0 @@
ShowPokedexMenu: ; 40000 (10:4000)
call GBPalWhiteOut
call ClearScreen
call UpdateSprites ; move sprites
ld a,[wListScrollOffset]
push af
xor a
ld [wCurrentMenuItem],a
ld [wListScrollOffset],a
ld [wLastMenuItem],a
inc a
ld [wd11e],a
ld [hJoy7],a
.setUpGraphics
ld b,$08
call GoPAL_SET
callab LoadPokedexTilePatterns
.doPokemonListMenu
ld hl,wTopMenuItemY
ld a,3
ld [hli],a ; top menu item Y
xor a
ld [hli],a ; top menu item X
inc a
ld [wcc37],a
inc hl
inc hl
ld a,6
ld [hli],a ; max menu item ID
ld [hl],%00110011 ; menu watched keys (Left, Right, B button, A button)
call HandlePokedexListMenu
jr c,.goToSideMenu ; if the player chose a pokemon from the list
.exitPokedex
xor a
ld [wcc37],a
ld [wCurrentMenuItem],a
ld [wLastMenuItem],a
<<<<<<< HEAD
ld [hJoy7],a
ld [wcd3a],a
ld [wcd3b],a
=======
ld [$ffb7],a
ld [wWastedByteCD3A],a
ld [wOverrideSimulatedJoypadStatesMask],a
>>>>>>> yama/master
pop af
ld [wListScrollOffset],a
call GBPalWhiteOutWithDelay3
call GoPAL_SET_CF1C
jp ReloadMapData
.goToSideMenu
call HandlePokedexSideMenu
dec b
jr z,.exitPokedex ; if the player chose Quit
dec b
jr z,.doPokemonListMenu ; if pokemon not seen or player pressed B button
jp .setUpGraphics ; if pokemon data or area was shown
; handles the menu on the lower right in the pokedex screen
; OUTPUT:
; b = reason for exiting menu
; 00: showed pokemon data or area
; 01: the player chose Quit
; 02: the pokemon has not been seen yet or the player pressed the B button
HandlePokedexSideMenu: ; 4006d (10:406d)
call PlaceUnfilledArrowMenuCursor
ld a,[wCurrentMenuItem]
push af
ld b,a
ld a,[wLastMenuItem]
push af
ld a,[wListScrollOffset]
push af
add b
inc a
ld [wd11e],a
ld a,[wd11e]
push af
ld a,[wWhichTrade]
push af
ld hl,wPokedexSeen
call IsPokemonBitSet
ld b,2
jr z,.exitSideMenu
call PokedexToIndex
ld hl,wTopMenuItemY
ld a,10
ld [hli],a ; top menu item Y
ld a,15
ld [hli],a ; top menu item X
xor a
ld [hli],a ; current menu item ID
inc hl
ld a,3
ld [hli],a ; max menu item ID
ld [hli],a ; menu watched keys (A button and B button)
xor a
ld [hli],a ; old menu item ID
ld [wcc37],a
.handleMenuInput
call HandleMenuInput
bit 1,a ; was the B button pressed?
ld b,2
jr nz,.buttonBPressed
ld a,[wCurrentMenuItem]
and a
jr z,.choseData
dec a
jr z,.choseCry
dec a
jr z,.choseArea
.choseQuit
ld b,1
.exitSideMenu
pop af
ld [wWhichTrade],a
pop af
ld [wd11e],a
pop af
ld [wListScrollOffset],a
pop af
ld [wLastMenuItem],a
pop af
ld [wCurrentMenuItem],a
push bc
hlCoord 0, 3
ld de,20
ld bc,$7f0d ; 13 blank tiles
call DrawTileLine ; cover up the menu cursor in the pokemon list
pop bc
ret
.buttonBPressed
push bc
hlCoord 15, 10
ld de,20
ld bc,$7f07 ; 7 blank tiles
call DrawTileLine ; cover up the menu cursor in the side menu
pop bc
jr .exitSideMenu
.choseData
call ShowPokedexDataInternal
ld b,0
jr .exitSideMenu
; play pokemon cry
.choseCry
ld a,[wd11e]
call GetCryData ; get cry data
call PlaySound ; play sound
jr .handleMenuInput
.choseArea
predef LoadTownMap_Nest ; display pokemon areas
ld b,0
jr .exitSideMenu
; handles the list of pokemon on the left of the pokedex screen
; sets carry flag if player presses A, unsets carry flag if player presses B
HandlePokedexListMenu: ; 40111 (10:4111)
xor a
ld [H_AUTOBGTRANSFERENABLED],a
; draw the horizontal line separating the seen and owned amounts from the menu
hlCoord 15, 8
ld a,$7a ; horizontal line tile
ld [hli],a
ld [hli],a
ld [hli],a
ld [hli],a
ld [hli],a
hlCoord 14, 0
ld [hl],$71 ; vertical line tile
hlCoord 14, 1
call DrawPokedexVerticalLine
hlCoord 14, 9
call DrawPokedexVerticalLine
ld hl,wPokedexSeen
ld b,wPokedexSeenEnd - wPokedexSeen
call CountSetBits
ld de,wd11e
hlCoord 16, 3
ld bc,$0103
call PrintNumber ; print number of seen pokemon
ld hl,wPokedexOwned
ld b,wPokedexOwnedEnd - wPokedexOwned
call CountSetBits
ld de,wd11e
hlCoord 16, 6
ld bc,$0103
call PrintNumber ; print number of owned pokemon
hlCoord 16, 2
ld de,PokedexSeenText
call PlaceString
hlCoord 16, 5
ld de,PokedexOwnText
call PlaceString
hlCoord 1, 1
ld de,PokedexContentsText
call PlaceString
hlCoord 16, 10
ld de,PokedexMenuItemsText
call PlaceString
; find the highest pokedex number among the pokemon the player has seen
ld hl,wPokedexSeenEnd - 1
ld b,153
.maxSeenPokemonLoop
ld a,[hld]
ld c,8
.maxSeenPokemonInnerLoop
dec b
sla a
jr c,.storeMaxSeenPokemon
dec c
jr nz,.maxSeenPokemonInnerLoop
jr .maxSeenPokemonLoop
.storeMaxSeenPokemon
ld a,b
ld [wWhichTrade],a ; max seen pokemon
.loop
xor a
ld [H_AUTOBGTRANSFERENABLED],a
hlCoord 4, 2
ld bc,$0e0a
call ClearScreenArea
hlCoord 1, 3
ld a,[wListScrollOffset]
ld [wd11e],a
ld d,7
ld a,[wWhichTrade]
cp a,7
jr nc,.printPokemonLoop
ld d,a
dec a
ld [wMaxMenuItem],a
; loop to print pokemon pokedex numbers and names
; if the player has owned the pokemon, it puts a pokeball beside the name
.printPokemonLoop
ld a,[wd11e]
inc a
ld [wd11e],a
push af
push de
push hl
ld de,-20
add hl,de
ld de,wd11e
ld bc,$8103
call PrintNumber ; print the pokedex number
ld de,20
add hl,de
dec hl
push hl
ld hl,wPokedexOwned
call IsPokemonBitSet
pop hl
ld a," "
jr z,.writeTile
ld a,$72 ; pokeball tile
.writeTile
ld [hl],a ; put a pokeball next to pokemon that the player has owned
push hl
ld hl,wPokedexSeen
call IsPokemonBitSet
jr nz,.getPokemonName ; if the player has seen the pokemon
ld de,.dashedLine ; print a dashed line in place of the name if the player hasn't seen the pokemon
jr .skipGettingName
.dashedLine ; for unseen pokemon in the list
db "----------@"
.getPokemonName
call PokedexToIndex
call GetMonName
.skipGettingName
pop hl
inc hl
call PlaceString
pop hl
ld bc,2 * 20
add hl,bc
pop de
pop af
ld [wd11e],a
dec d
jr nz,.printPokemonLoop
ld a,01
ld [H_AUTOBGTRANSFERENABLED],a
call Delay3
call GBPalNormal
call HandleMenuInput
bit 1,a ; was the B button pressed?
jp nz,.buttonBPressed
.checkIfUpPressed
bit 6,a ; was Up pressed?
jr z,.checkIfDownPressed
.upPressed ; scroll up one row
ld a,[wListScrollOffset]
and a
jp z,.loop
dec a
ld [wListScrollOffset],a
jp .loop
.checkIfDownPressed
bit 7,a ; was Down pressed?
jr z,.checkIfRightPressed
.downPressed ; scroll down one row
ld a,[wWhichTrade]
cp a,7
jp c,.loop
sub a,7
ld b,a
ld a,[wListScrollOffset]
cp b
jp z,.loop
inc a
ld [wListScrollOffset],a
jp .loop
.checkIfRightPressed
bit 4,a ; was Right pressed?
jr z,.checkIfLeftPressed
.rightPressed ; scroll down 7 rows
ld a,[wWhichTrade]
cp a,7
jp c,.loop
sub a,6
ld b,a
ld a,[wListScrollOffset]
add a,7
ld [wListScrollOffset],a
cp b
jp c,.loop
dec b
ld a,b
ld [wListScrollOffset],a
jp .loop
.checkIfLeftPressed ; scroll up 7 rows
bit 5,a ; was Left pressed?
jr z,.buttonAPressed
.leftPressed
ld a,[wListScrollOffset]
sub a,7
ld [wListScrollOffset],a
jp nc,.loop
xor a
ld [wListScrollOffset],a
jp .loop
.buttonAPressed
scf
ret
.buttonBPressed
and a
ret
DrawPokedexVerticalLine: ; 4028e (10:428e)
ld c,9 ; height of line
ld de,20 ; width of screen
ld a,$71 ; vertical line tile
.loop
ld [hl],a
add hl,de
xor a,1 ; toggle between vertical line tile and box tile
dec c
jr nz,.loop
ret
PokedexSeenText: ; 4029d (10:429d)
db "SEEN@"
PokedexOwnText: ; 402a2 (10:42a2)
db "OWN@"
PokedexContentsText: ; 402a6 (10:42a6)
db "CONTENTS@"
PokedexMenuItemsText: ; 402af (10:42af)
db "DATA"
next "CRY"
next "AREA"
next "QUIT@"
; tests if a pokemon's bit is set in the seen or owned pokemon bit fields
; INPUT:
; [wd11e] = pokedex number
; hl = address of bit field
IsPokemonBitSet: ; 402c2 (10:42c2)
ld a,[wd11e]
dec a
ld c,a
ld b,2
predef FlagActionPredef
ld a,c
and a
ret
; function to display pokedex data from outside the pokedex
ShowPokedexData: ; 402d1 (10:42d1)
call GBPalWhiteOutWithDelay3
call ClearScreen
call UpdateSprites
callab LoadPokedexTilePatterns ; load pokedex tiles
; function to display pokedex data from inside the pokedex
ShowPokedexDataInternal: ; 402e2 (10:42e2)
ld hl,wd72c
set 1,[hl]
ld a,$33 ; 3/7 volume
ld [$ff24],a
call GBPalWhiteOut ; zero all palettes
call ClearScreen
ld a,[wd11e] ; pokemon ID
ld [wcf91],a
push af
ld b,04
call GoPAL_SET
pop af
ld [wd11e],a
ld a,[hTilesetType]
push af
xor a
ld [hTilesetType],a
hlCoord 0, 0
ld de,1
ld bc,$6414
call DrawTileLine ; draw top border
hlCoord 0, 17
ld b,$6f
call DrawTileLine ; draw bottom border
hlCoord 0, 1
ld de,20
ld bc,$6610
call DrawTileLine ; draw left border
hlCoord 19, 1
ld b,$67
call DrawTileLine ; draw right border
ld a,$63 ; upper left corner tile
Coorda 0, 0
ld a,$65 ; upper right corner tile
Coorda 19, 0
ld a,$6c ; lower left corner tile
Coorda 0, 17
ld a,$6e ; lower right corner tile
Coorda 19, 17
hlCoord 0, 9
ld de,PokedexDataDividerLine
call PlaceString ; draw horizontal divider line
hlCoord 9, 6
ld de,HeightWeightText
call PlaceString
call GetMonName
hlCoord 9, 2
call PlaceString
ld hl,PokedexEntryPointers
ld a,[wd11e]
dec a
ld e,a
ld d,0
add hl,de
add hl,de
ld a,[hli]
ld e,a
ld d,[hl] ; de = address of pokedex entry
hlCoord 9, 4
call PlaceString ; print species name
ld h,b
ld l,c
push de
ld a,[wd11e]
push af
call IndexToPokedex
hlCoord 2, 8
ld a, "№"
ld [hli],a
ld a,$f2
ld [hli],a
ld de,wd11e
ld bc,$8103
call PrintNumber ; print pokedex number
ld hl,wPokedexOwned
call IsPokemonBitSet
pop af
ld [wd11e],a
ld a,[wcf91]
ld [wd0b5],a
pop de
push af
push bc
push de
push hl
call Delay3
call GBPalNormal
call GetMonHeader ; load pokemon picture location
hlCoord 1, 1
call LoadFlippedFrontSpriteByMonIndex ; draw pokemon picture
ld a,[wcf91]
call PlayCry ; play pokemon cry
pop hl
pop de
pop bc
pop af
ld a,c
and a
jp z,.waitForButtonPress ; if the pokemon has not been owned, don't print the height, weight, or description
inc de ; de = address of feet (height)
ld a,[de] ; reads feet, but a is overwritten without being used
hlCoord 12, 6
ld bc,$0102
call PrintNumber ; print feet (height)
ld a,$60 ; feet symbol tile (one tick)
ld [hl],a
inc de
inc de ; de = address of inches (height)
hlCoord 15, 6
ld bc,$8102
call PrintNumber ; print inches (height)
ld a,$61 ; inches symbol tile (two ticks)
ld [hl],a
; now print the weight (note that weight is stored in tenths of pounds internally)
inc de
inc de
inc de ; de = address of upper byte of weight
push de
; put weight in big-endian order at $ff8b
ld hl,$ff8b
ld a,[hl] ; save existing value of [$ff8b]
push af
ld a,[de] ; a = upper byte of weight
ld [hli],a ; store upper byte of weight in [$ff8b]
ld a,[hl] ; save existing value of [$ff8c]
push af
dec de
ld a,[de] ; a = lower byte of weight
ld [hl],a ; store lower byte of weight in [$ff8c]
ld de,$ff8b
hlCoord 11, 8
ld bc,$0205 ; no leading zeroes, right-aligned, 2 bytes, 5 digits
call PrintNumber ; print weight
hlCoord 14, 8
ld a,[$ff8c]
sub a,10
ld a,[$ff8b]
sbc a,0
jr nc,.next
ld [hl],"0" ; if the weight is less than 10, put a 0 before the decimal point
.next
inc hl
ld a,[hli]
ld [hld],a ; make space for the decimal point by moving the last digit forward one tile
ld [hl],$f2 ; decimal point tile
pop af
ld [$ff8c],a ; restore original value of [$ff8c]
pop af
ld [$ff8b],a ; restore original value of [$ff8b]
pop hl
inc hl ; hl = address of pokedex description text
bcCoord 1, 11
ld a,2
ld [$fff4],a
call TextCommandProcessor ; print pokedex description text
xor a
ld [$fff4],a
.waitForButtonPress
call JoypadLowSensitivity
ld a,[hJoy5]
and a,%00000011 ; A button and B button
jr z,.waitForButtonPress
pop af
ld [hTilesetType],a
call GBPalWhiteOut
call ClearScreen
call GoPAL_SET_CF1C
call LoadTextBoxTilePatterns
call GBPalNormal
ld hl,wd72c
res 1,[hl]
ld a,$77 ; max volume
ld [$ff24],a
ret
HeightWeightText: ; 40448 (10:4448)
db "HT ?",$60,"??",$61,$4E,"WT ???lb@"
; XXX does anything point to this?
Unknown_4045D: ; 4045d (10:445d)
db $54,$50
; horizontal line that divides the pokedex text description from the rest of the data
PokedexDataDividerLine: ; 4045f (10:445f)
db $68,$69,$6B,$69,$6B
db $69,$6B,$69,$6B,$6B
db $6B,$6B,$69,$6B,$69
db $6B,$69,$6B,$69,$6A
db $50
; draws a line of tiles
; INPUT:
; b = tile ID
; c = number of tile ID's to write
; de = amount to destination address after each tile (1 for horizontal, 20 for vertical)
; hl = destination address
DrawTileLine: ; 40474 (10:4474)
push bc
push de
.loop
ld [hl],b
add hl,de
dec c
jr nz,.loop
pop de
pop bc
ret
INCLUDE "data/pokedex_entries.asm"
PokedexToIndex: ; 40ff9 (10:4ff9)
; converts the Pokédex number at wd11e to an index
push bc
push hl
ld a,[wd11e]
ld b,a
ld c,0
ld hl,PokedexOrder
.loop ; go through the list until we find an entry with a matching dex number
inc c
ld a,[hli]
cp b
jr nz,.loop
ld a,c
ld [wd11e],a
pop hl
pop bc
ret
IndexToPokedex: ; 41010 (10:5010)
; converts the indexédex number at wd11e to a Pokédex number
push bc
push hl
ld a,[wd11e]
dec a
ld hl,PokedexOrder
ld b,0
ld c,a
add hl,bc
ld a,[hl]
ld [wd11e],a
pop hl
pop bc
ret
INCLUDE "data/pokedex_order.asm"

View file

@ -1,605 +0,0 @@
DisplayTownMap: ; 70e3e (1c:4e3e)
call LoadTownMap
ld hl, wUpdateSpritesEnabled
ld a, [hl]
push af
ld [hl], $ff
push hl
ld a, $1
ld [hJoy7], a
ld a, [W_CURMAP] ; W_CURMAP
push af
ld b, $0
call Func_711c4
hlCoord 1, 0
ld de, wcd6d
call PlaceString
ld hl, wOAMBuffer
ld de, wTileMapBackup
ld bc, $10
call CopyData
ld hl, vSprites + $40
ld de, TownMapCursor ; $4f40
ld bc, (BANK(TownMapCursor) << 8) + $04
call CopyVideoDataDouble
xor a
ld [wWhichTrade], a ; wWhichTrade
pop af
jr Func_70e92
Func_70e7e: ; 70e7e (1c:4e7e)
ld hl, wTileMap
ld bc, $114
call ClearScreenArea
ld hl, TownMapOrder ; $4f11
ld a, [wWhichTrade] ; wWhichTrade
ld c, a
ld b, $0
add hl, bc
ld a, [hl]
Func_70e92: ; 70e92 (1c:4e92)
ld de, wHPBarMaxHP
call Func_712f1
ld a, [de]
push hl
call Func_71258
ld a, $4
ld [wcd5b], a
ld hl, wOAMBuffer + $10
call Func_71279
pop hl
ld de, wcd6d
.asm_70eac
ld a, [hli]
ld [de], a
inc de
cp $50
jr nz, .asm_70eac
hlCoord 1, 0
ld de, wcd6d
call PlaceString
ld hl, wOAMBuffer + $10
ld de, wTileMapBackup + 16
ld bc, $10
call CopyData
.asm_70ec8
call TownMapSpriteBlinkingAnimation
call JoypadLowSensitivity
ld a, [hJoy5]
ld b, a
and $c3
jr z, .asm_70ec8
ld a, (SFX_02_3c - SFX_Headers_02) / 3
call PlaySound
bit 6, b
jr nz, .asm_70ef2
bit 7, b
jr nz, .asm_70f01
xor a
<<<<<<< HEAD
ld [wd09b], a
ld [hJoy7], a
ld [W_SUBANIMTRANSFORM], a ; W_SUBANIMTRANSFORM
=======
ld [wTownMapSpriteBlinkingEnabled], a
ld [$ffb7], a
ld [wTownMapSpriteBlinkingCounter], a
>>>>>>> yama/master
call Func_711ab
pop hl
pop af
ld [hl], a
ret
.asm_70ef2
ld a, [wWhichTrade] ; wWhichTrade
inc a
cp $2f
jr nz, .asm_70efb
xor a
.asm_70efb
ld [wWhichTrade], a ; wWhichTrade
jp Func_70e7e
.asm_70f01
ld a, [wWhichTrade] ; wWhichTrade
dec a
cp $ff
jr nz, .asm_70f0b
ld a, $2e
.asm_70f0b
ld [wWhichTrade], a ; wWhichTrade
jp Func_70e7e
INCLUDE "data/town_map_order.asm"
TownMapCursor: ; 70f40 (1c:4f40)
INCBIN "gfx/town_map_cursor.1bpp"
LoadTownMap_Nest: ; 70f60 (1c:4f60)
call LoadTownMap
ld hl, wUpdateSpritesEnabled
ld a, [hl]
push af
ld [hl], $ff
push hl
call Func_711ef
call GetMonName
hlCoord 1, 0
call PlaceString
ld h, b
ld l, c
ld de, MonsNestText
call PlaceString
call WaitForTextScrollButtonPress
call Func_711ab
pop hl
pop af
ld [hl], a
ret
MonsNestText: ; 70f89 (1c:4f89)
db "'s NEST@"
LoadTownMap_Fly: ; 70f90 (1c:4f90)
call ClearSprites
call LoadTownMap
call LoadPlayerSpriteGraphics
call LoadFontTilePatterns
ld de, BirdSprite ; $4d80
ld hl, vSprites + $40
ld bc, (BANK(BirdSprite) << 8) + $0c
call CopyVideoData
ld de, TownMapUpArrow ; $5093
ld hl, vChars1 + $6d0
ld bc, (BANK(TownMapUpArrow) << 8) + $01
call CopyVideoDataDouble
call Func_71070
ld hl, wUpdateSpritesEnabled
ld a, [hl]
push af
ld [hl], $ff
push hl
ld hl, wTileMap
ld de, ToText
call PlaceString
ld a, [W_CURMAP] ; W_CURMAP
ld b, $0
call Func_711c4
ld hl, wTrainerEngageDistance
deCoord 18, 0
.townMapFlyLoop
ld a, $7f
ld [de], a
push hl
push hl
hlCoord 3, 0
ld bc, $10f
call ClearScreenArea
pop hl
ld a, [hl]
ld b, $4
call Func_711c4
hlCoord 3, 0
ld de, wcd6d
call PlaceString
ld c, $f
call DelayFrames
hlCoord 18, 0
ld [hl], $ed
hlCoord 19, 0
ld [hl], $ee
pop hl
.asm_71004
push hl
call DelayFrame
call JoypadLowSensitivity
ld a, [hJoy5]
ld b, a
pop hl
and $c3
jr z, .asm_71004
bit 0, b
jr nz, .asm_71026
ld a, (SFX_02_3c - SFX_Headers_02) / 3
call PlaySound
bit 6, b
jr nz, .asm_71042
bit 7, b
jr nz, .asm_71058
jr .asm_71037
.asm_71026
ld a, (SFX_02_3e - SFX_Headers_02) / 3
call PlaySound
ld a, [hl]
ld [wDestinationMap], a
ld hl, wd732
set 3, [hl]
inc hl
set 7, [hl]
.asm_71037
xor a
ld [wTownMapSpriteBlinkingEnabled], a
call GBPalWhiteOutWithDelay3
pop hl
pop af
ld [hl], a
ret
.asm_71042
deCoord 18, 0
inc hl
ld a, [hl]
cp $ff
jr z, .asm_71052
cp $fe
jr z, .asm_71042
jp .townMapFlyLoop
.asm_71052
ld hl, wTrainerEngageDistance
jp .townMapFlyLoop
.asm_71058
deCoord 19, 0
dec hl
ld a, [hl]
cp $ff
jr z, .asm_71068
cp $fe
jr z, .asm_71058
jp .townMapFlyLoop
.asm_71068
ld hl, wcd49
jr .asm_71058
ToText: ; 7106d (1c:506d)
db "To@"
Func_71070: ; 71070 (1c:5070)
ld hl, wWhichTrade ; wWhichTrade
ld [hl], $ff
inc hl
ld a, [W_TOWNVISITEDFLAG]
ld e, a
ld a, [W_TOWNVISITEDFLAG + 1]
ld d, a
ld bc, $b
.asm_71081
srl d
rr e
ld a, $fe
jr nc, .asm_7108a
ld a, b
.asm_7108a
ld [hl], a
inc hl
inc b
dec c
jr nz, .asm_71081
ld [hl], $ff
ret
TownMapUpArrow: ; 71093 (1c:5093)
INCBIN "gfx/up_arrow.1bpp"
LoadTownMap: ; 7109b (1c:509b)
call GBPalWhiteOutWithDelay3
call ClearScreen
call UpdateSprites
ld hl, wTileMap
ld b, $12
ld c, $12
call TextBoxBorder
call DisableLCD
ld hl, WorldMapTileGraphics ; $65a8
ld de, vChars2 + $600
ld bc, $100
ld a, BANK(WorldMapTileGraphics)
call FarCopyData2
ld hl, MonNestIcon ; $56be
ld de, vSprites + $40
ld bc, $8
ld a, BANK(MonNestIcon)
call FarCopyDataDouble
ld hl, wTileMap
ld de, CompressedMap ; $5100
.asm_710d3
ld a, [de]
and a
jr z, .asm_710e9
ld b, a
and $f
ld c, a
ld a, b
swap a
and $f
add $60
.asm_710e2
ld [hli], a
dec c
jr nz, .asm_710e2
inc de
jr .asm_710d3
.asm_710e9
call EnableLCD
ld b, $2
call GoPAL_SET
call Delay3
call GBPalNormal
xor a
ld [wTownMapSpriteBlinkingCounter], a
inc a
ld [wTownMapSpriteBlinkingEnabled], a
ret
CompressedMap: ; 71100 (1c:5100)
; you can decompress this file with the redrle program in the extras/ dir
INCBIN "gfx/town_map.rle"
Func_711ab: ; 711ab (1c:51ab)
xor a
ld [wTownMapSpriteBlinkingEnabled], a
call GBPalWhiteOut
call ClearScreen
call ClearSprites
call LoadPlayerSpriteGraphics
call LoadFontTilePatterns
call UpdateSprites
jp GoPAL_SET_CF1C
Func_711c4: ; 711c4 (1c:51c4)
push af
ld a, b
ld [wcd5b], a
pop af
ld de, wHPBarMaxHP
call Func_712f1
ld a, [de]
push hl
call Func_71258
call Func_7126d
pop hl
ld de, wcd6d
.asm_711dc
ld a, [hli]
ld [de], a
inc de
cp $50
jr nz, .asm_711dc
ld hl, wOAMBuffer
ld de, wTileMapBackup
ld bc, $a0
jp CopyData
Func_711ef: ; 711ef (1c:51ef)
callba Func_e9cb
call Func_712d9
ld hl, wOAMBuffer
ld de, wHPBarMaxHP
.asm_71200
ld a, [de]
cp $ff
jr z, .asm_7121d
and a
jr z, .asm_7121a
push hl
call Func_712f1
pop hl
ld a, [de]
cp $19
jr z, .asm_7121a
call Func_71258
ld a, $4
ld [hli], a
xor a
ld [hli], a
.asm_7121a
inc de
jr .asm_71200
.asm_7121d
ld a, l
and a
jr nz, .asm_71236
hlCoord 1, 7
ld b, $2
ld c, $f
call TextBoxBorder
hlCoord 2, 9
ld de, AreaUnknownText
call PlaceString
jr .asm_7123e
.asm_71236
ld a, [W_CURMAP] ; W_CURMAP
ld b, $0
call Func_711c4
.asm_7123e
ld hl, wOAMBuffer
ld de, wTileMapBackup
ld bc, $a0
jp CopyData
AreaUnknownText: ; 7124a (1c:524a)
db " AREA UNKNOWN@"
Func_71258: ; 71258 (1c:5258)
push af
and $f0
srl a
add $18
ld b, a
ld [hli], a
pop af
and $f
swap a
srl a
add $18
ld c, a
ld [hli], a
ret
Func_7126d: ; 7126d (1c:526d)
ld a, [wcd5b]
and a
ld hl, wOAMBuffer + $90
jr z, Func_71279
ld hl, wOAMBuffer + $80
Func_71279: ; 71279 (1c:5279)
push hl
ld hl, $fcfc
add hl, bc
ld b, h
ld c, l
pop hl
Func_71281: ; 71281 (1c:5281)
ld de, $202
.asm_71284
push de
push bc
.asm_71286
ld a, b
ld [hli], a
ld a, c
ld [hli], a
ld a, [wcd5b]
ld [hli], a
inc a
ld [wcd5b], a
xor a
ld [hli], a
inc d
ld a, $8
add c
ld c, a
dec e
jr nz, .asm_71286
pop bc
pop de
ld a, $8
add b
ld b, a
dec d
jr nz, .asm_71284
ret
Func_712a6: ; 712a6 (1c:52a6)
xor a
ld [wcd5c], a
ld de, $202
.asm_712ad
push de
push bc
.asm_712af
ld a, b
ld [hli], a
ld a, c
ld [hli], a
ld a, [wcd5b]
ld [hli], a
ld a, [wcd5c]
ld [hli], a
xor $20
ld [wcd5c], a
inc d
ld a, $8
add c
ld c, a
dec e
jr nz, .asm_712af
pop bc
pop de
push hl
ld hl, wcd5b
inc [hl]
inc [hl]
pop hl
ld a, $8
add b
ld b, a
dec d
jr nz, .asm_712ad
ret
Func_712d9: ; 712d9 (1c:52d9)
ld de, wHPBarMaxHP
.asm_712dc
ld a, [de]
inc de
cp $ff
ret z
ld c, a
ld l, e
ld h, d
.asm_712e4
ld a, [hl]
cp $ff
jr z, .asm_712dc
cp c
jr nz, .asm_712ee
xor a
ld [hl], a
.asm_712ee
inc hl
jr .asm_712e4
Func_712f1: ; 712f1 (1c:52f1)
cp REDS_HOUSE_1F
jr c, .asm_71304
ld bc, $4
ld hl, InternalMapEntries ; $5382
.asm_712fb
cp [hl]
jr c, .asm_71301
add hl, bc
jr .asm_712fb
.asm_71301
inc hl
jr .asm_7130d
.asm_71304
ld hl, ExternalMapEntries ; $5313
ld c, a
ld b, $0
add hl, bc
add hl, bc
add hl, bc
.asm_7130d
ld a, [hli]
ld [de], a
ld a, [hli]
ld h, [hl]
ld l, a
ret
INCLUDE "data/town_map_entries.asm"
INCLUDE "text/map_names.asm"
MonNestIcon: ; 716be (1c:56be)
INCBIN "gfx/mon_nest_icon.1bpp"
TownMapSpriteBlinkingAnimation: ; 716c6 (1c:56c6)
ld a, [wTownMapSpriteBlinkingCounter]
inc a
cp 25
jr z, .hideSprites
cp 50
jr nz, .done
; show sprites when the counter reaches 50
ld hl, wTileMapBackup
ld de, wOAMBuffer
ld bc, $90
call CopyData
xor a
jr .done
.hideSprites
ld hl, wOAMBuffer
ld b, $24
ld de, $4
.hideSpritesLoop
ld [hl], $a0
add hl, de
dec b
jr nz, .hideSpritesLoop
ld a, 25
.done
ld [wTownMapSpriteBlinkingCounter], a
jp DelayFrame