summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xengine/bank7.asm377
-rwxr-xr-xengine/home.asm (renamed from home.asm)0
-rwxr-xr-xengine/overworldmap.asm (renamed from overworldmap.asm)0
-rwxr-xr-xmain.asm7
4 files changed, 380 insertions, 4 deletions
diff --git a/engine/bank7.asm b/engine/bank7.asm
new file mode 100755
index 0000000..2885df8
--- /dev/null
+++ b/engine/bank7.asm
@@ -0,0 +1,377 @@
+INCBIN "baserom.gbc",$1c000,$1c056 - $1c000
+
+Func_1c056: ; 1c056 (7:4056)
+ push hl
+ push bc
+ push de
+ ld a, [$d32f]
+ add a
+ ld c, a
+ ld b, $0
+ ld hl, WarpDataPointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld bc, $0005
+ ld a, [$d330]
+ ld d, a
+ ld a, [$d331]
+ ld e, a
+.asm_1c072
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_1c095
+ ld a, [hld]
+ cp e
+ jr nz, .asm_1c07e
+ ld a, [hl]
+ cp d
+ jr z, .asm_1c081
+.asm_1c07e
+ add hl, bc
+ jr .asm_1c072
+.asm_1c081
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld [$d0bb], a
+ ld a, [hli]
+ ld [$d0bc], a
+ ld a, [hli]
+ ld [$d0bd], a
+ ld a, [$d334]
+ ld [$d0be], a
+.asm_1c095
+ pop de
+ pop bc
+ pop hl
+ ret
+
+WarpDataPointers: ; 1c099 (7:4099)
+ dw $0000
+ dw MasonLaboratoryWarpData
+ dw DeckMachineRoomWarpData
+ dw IshiharasHouseWarpData
+ dw FightingClubEntranceWarpData
+ dw FightingClubLobbyWarpData
+ dw FightingClubWarpData
+ dw RockClubEntranceWarpData
+ dw RockClubLobbyWarpData
+ dw RockClubWarpData
+ dw WaterClubEntranceWarpData
+ dw WaterClubLobbyWarpData
+ dw WaterClubWarpData
+ dw LightningClubEntranceWarpData
+ dw LightningClubLobbyWarpData
+ dw LightningClubWarpData
+ dw GrassClubEntranceWarpData
+ dw GrassClubLobbyWarpData
+ dw GrassClubWarpData
+ dw PsychicClubEntranceWarpData
+ dw PsychicClubLobbyWarpData
+ dw PsychicClubWarpData
+ dw ScienceClubEntranceWarpData
+ dw ScienceClubLobbyWarpData
+ dw ScienceClubWarpData
+ dw FireClubEntranceWarpData
+ dw FireClubLobbyWarpData
+ dw FireClubWarpData
+ dw ChallengeHallEntranceWarpData
+ dw ChallengeHallLobbyWarpData
+ dw ChallengeHallWarpData
+ dw PokemonDomeEntranceWarpData
+ dw PokemonDomeWarpData
+ dw HallOfHonorWarpData
+
+; each warp is five bytes long
+; coordinates are measured in tiles
+; 1: x coordinate of current map
+; 2: y coordinate of current map
+; 3: id of connected map
+; 4: x coordinate of connected map
+; 5: y coordinate of connected map
+; double null terminated
+MasonLaboratoryWarpData: ; 1c0dd (7:40dd)
+ db $0E,$1C,OVERWORLD_MAP, $00,$00
+ db $10,$1C,OVERWORLD_MAP, $00,$00
+ db $1A,$0A,DECK_MACHINE_ROOM,$02,$0A
+ db $1A,$0C,DECK_MACHINE_ROOM,$02,$0C
+ db $00,$00
+
+DeckMachineRoomWarpData: ; 1c0f3 (7:40f3)
+ db $00,$0A,MASON_LABORATORY,$18,$0A
+ db $00,$0C,MASON_LABORATORY,$18,$0C
+ db $00,$00
+
+IshiharasHouseWarpData: ; 1c0ff (7:40ff)
+ db $08,$16,OVERWORLD_MAP,$00,$00
+ db $0A,$16,OVERWORLD_MAP,$00,$00
+ db $00,$00
+
+FightingClubEntranceWarpData: ; 1c10b (7:410b)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,FIGHTING_CLUB_LOBBY,$18,$0A
+ db $00,$08,FIGHTING_CLUB_LOBBY,$18,$0C
+ db $08,$00,FIGHTING_CLUB, $0A,$0E
+ db $0A,$00,FIGHTING_CLUB, $0C,$0E
+ db $00,$00
+
+FightingClubLobbyWarpData: ; 1c12b (7:412b)
+ db $1A,$0A,FIGHTING_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,FIGHTING_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+FightingClubWarpData: ; 1c137 (7:4137)
+ db $0A,$10,FIGHTING_CLUB_ENTRANCE,$08,$02
+ db $0C,$10,FIGHTING_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+RockClubEntranceWarpData: ; 1c143 (7:4143)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,ROCK_CLUB_LOBBY,$18,$0A
+ db $00,$08,ROCK_CLUB_LOBBY,$18,$0C
+ db $08,$00,ROCK_CLUB, $0C,$1A
+ db $0A,$00,ROCK_CLUB, $0E,$1A
+ db $00,$00
+
+RockClubLobbyWarpData: ; 1c163 (7:4163)
+ db $1A,$0A,ROCK_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,ROCK_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+RockClubWarpData: ; 1c16f (7:416f)
+ db $0C,$1C,ROCK_CLUB_ENTRANCE,$08,$02
+ db $0E,$1C,ROCK_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+WaterClubEntranceWarpData: ; 1c17b (7:417b)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,WATER_CLUB_LOBBY,$18,$0A
+ db $00,$08,WATER_CLUB_LOBBY,$18,$0C
+ db $08,$00,WATER_CLUB, $0C,$1C
+ db $0A,$00,WATER_CLUB, $0E,$1C
+ db $00,$00
+
+WaterClubLobbyWarpData: ; 1c19b (7:419b)
+ db $1A,$0A,WATER_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,WATER_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+WaterClubWarpData: ; 1c1a7 (7:41a7)
+ db $0C,$1E,WATER_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,WATER_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+LightningClubEntranceWarpData: ; 1c1b3 (7:41b3)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,LIGHTNING_CLUB_LOBBY,$18,$0A
+ db $00,$08,LIGHTNING_CLUB_LOBBY,$18,$0C
+ db $08,$00,LIGHTNING_CLUB, $0C,$1C
+ db $0A,$00,LIGHTNING_CLUB, $0E,$1C
+ db $00,$00
+
+LightningClubLobbyWarpData: ; 1c1d3 (7:41d3)
+ db $1A,$0A,LIGHTNING_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,LIGHTNING_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+LightningClubWarpData: ; 1c1df (7:41df)
+ db $0C,$1E,LIGHTNING_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,LIGHTNING_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+GrassClubEntranceWarpData: ; 1c1eb (7:41eb)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,GRASS_CLUB_LOBBY,$18,$0A
+ db $00,$08,GRASS_CLUB_LOBBY,$18,$0C
+ db $08,$00,GRASS_CLUB, $0C,$1C
+ db $0A,$00,GRASS_CLUB, $0E,$1C
+ db $00,$00
+
+GrassClubLobbyWarpData: ; 1c20b (7:420b)
+ db $1A,$0A,GRASS_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,GRASS_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+GrassClubWarpData: ; 1c217 (7:4217)
+ db $0C,$1E,GRASS_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,GRASS_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+PsychicClubEntranceWarpData: ; 1c223 (7:4223)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,PSYCHIC_CLUB_LOBBY,$18,$0A
+ db $00,$08,PSYCHIC_CLUB_LOBBY,$18,$0C
+ db $08,$00,PSYCHIC_CLUB, $0C,$18
+ db $0A,$00,PSYCHIC_CLUB, $0E,$18
+ db $00,$00
+
+PsychicClubLobbyWarpData: ; 1c243 (7:4243)
+ db $1A,$0A,PSYCHIC_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,PSYCHIC_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+PsychicClubWarpData: ; 1c24f (7:424f)
+ db $0C,$1A,PSYCHIC_CLUB_ENTRANCE,$08,$02
+ db $0E,$1A,PSYCHIC_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+ScienceClubEntranceWarpData: ; 1c25b (7:425b)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,SCIENCE_CLUB_LOBBY,$18,$0A
+ db $00,$08,SCIENCE_CLUB_LOBBY,$18,$0C
+ db $08,$00,SCIENCE_CLUB, $0C,$1C
+ db $0A,$00,SCIENCE_CLUB, $0E,$1C
+ db $00,$00
+
+ScienceClubLobbyWarpData: ; 1c27b (7:427b)
+ db $1A,$0A,SCIENCE_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,SCIENCE_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+ScienceClubWarpData: ; 1c287 (7:4287)
+ db $0C,$1E,SCIENCE_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,SCIENCE_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+FireClubEntranceWarpData: ; 1c293 (7:4293)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,FIRE_CLUB_LOBBY,$18,$0A
+ db $00,$08,FIRE_CLUB_LOBBY,$18,$0C
+ db $08,$00,FIRE_CLUB, $0C,$1C
+ db $0A,$00,FIRE_CLUB, $0E,$1C
+ db $00,$00
+
+FireClubLobbyWarpData: ; 1c2b3 (7:42b3)
+ db $1A,$0A,FIRE_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,FIRE_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+FireClubWarpData: ; 1c2bf (7:42bf)
+ db $0C,$1E,FIRE_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,FIRE_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+ChallengeHallEntranceWarpData: ; 1c2cb (7:42cb)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,CHALLENGE_HALL_LOBBY,$18,$0A
+ db $00,$08,CHALLENGE_HALL_LOBBY,$18,$0C
+ db $08,$00,CHALLENGE_HALL, $0E,$1C
+ db $0A,$00,CHALLENGE_HALL, $10,$1C
+ db $00,$00
+
+ChallengeHallLobbyWarpData: ; 1c2eb (7:42eb)
+ db $1A,$0A,CHALLENGE_HALL_ENTRANCE,$02,$06
+ db $1A,$0C,CHALLENGE_HALL_ENTRANCE,$02,$08
+ db $00,$00
+
+ChallengeHallWarpData: ; 1c2f7 (7:42f7)
+ db $0E,$1E,CHALLENGE_HALL_ENTRANCE,$08,$02
+ db $10,$1E,CHALLENGE_HALL_ENTRANCE,$0A,$02
+ db $00,$00
+
+PokemonDomeEntranceWarpData: ; 1c303 (7:4303)
+ db $0E,$10,OVERWORLD_MAP,$00,$00
+ db $10,$10,OVERWORLD_MAP,$00,$00
+ db $16,$00,POKEMON_DOME, $0E,$1C
+ db $18,$00,POKEMON_DOME, $10,$1C
+ db $00,$00
+
+PokemonDomeWarpData: ; 1c319 (7:4319)
+ db $0E,$1E,POKEMON_DOME_ENTRANCE,$16,$02
+ db $10,$1E,POKEMON_DOME_ENTRANCE,$18,$02
+ db $0E,$00,HALL_OF_HONOR, $0A,$16
+ db $10,$00,HALL_OF_HONOR, $0C,$16
+ db $00,$00
+
+HallOfHonorWarpData: ; 1c32f (7:432f)
+ db $0A,$18,POKEMON_DOME,$0E,$02
+ db $0C,$18,POKEMON_DOME,$10,$02
+ db $00,$00
+
+Func_1c33b: ; 1c33b (7:433b)
+ push hl
+ push bc
+ push de
+ ld a, [$d32f]
+ add a
+ ld c, a
+ add a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, MapSongs
+ add hl, bc
+ ld a, [hli]
+ ld [$d131], a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld [$d28f], a
+ ld a, [hli]
+ ld [$d132], a
+ ld a, [hli]
+ ld [$d290], a
+ ld a, [hli]
+ ld [$d111], a
+ ld a, [$cab4]
+ cp $2
+ jr nz, .asm_1c370
+ ld a, c
+ or a
+ jr z, .asm_1c370
+ ld [$d131], a
+.asm_1c370
+ pop de
+ pop bc
+ pop hl
+ ret
+
+; todo: figure out the rest of the data for each map
+MapSongs: ; 1c374 (7:4374)
+ db $00,$01,$00,$01,$01,MUSIC_OVERWORLD ; OVERWORLD_MAP
+ db $02,$03,$00,$02,$02,MUSIC_OVERWORLD ; MASON_LABORATORY
+ db $06,$07,$00,$02,$02,MUSIC_OVERWORLD ; DECK_MACHINE_ROOM
+ db $0A,$0B,$00,$03,$03,MUSIC_OVERWORLD ; ISHIHARAS_HOUSE
+ db $0C,$0D,$00,$03,$04,MUSIC_OVERWORLD ; FIGHTING_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; FIGHTING_CLUB_LOBBY
+ db $20,$21,$00,$04,$0D,MUSIC_CLUB3 ; FIGHTING_CLUB
+ db $0E,$0F,$00,$03,$05,MUSIC_OVERWORLD ; ROCK_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; ROCK_CLUB_LOBBY
+ db $22,$23,$00,$04,$0E,MUSIC_CLUB2 ; ROCK_CLUB
+ db $10,$11,$00,$03,$06,MUSIC_OVERWORLD ; WATER_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; WATER_CLUB_LOBBY
+ db $24,$25,$00,$02,$0F,MUSIC_CLUB2 ; WATER_CLUB
+ db $12,$13,$00,$03,$07,MUSIC_OVERWORLD ; LIGHTNING_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; LIGHTNING_CLUB_LOBBY
+ db $26,$27,$00,$05,$10,MUSIC_CLUB1 ; LIGHTNING_CLUB
+ db $14,$15,$00,$03,$08,MUSIC_OVERWORLD ; GRASS_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; GRASS_CLUB_LOBBY
+ db $28,$29,$00,$06,$11,MUSIC_CLUB1 ; GRASS_CLUB
+ db $16,$17,$00,$03,$09,MUSIC_OVERWORLD ; PSYCHIC_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; PSYCHIC_CLUB_LOBBY
+ db $2A,$2B,$00,$07,$12,MUSIC_CLUB2 ; PSYCHIC_CLUB
+ db $18,$19,$00,$03,$0A,MUSIC_OVERWORLD ; SCIENCE_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; SCIENCE_CLUB_LOBBY
+ db $2C,$2D,$00,$06,$13,MUSIC_CLUB3 ; SCIENCE_CLUB
+ db $1A,$1B,$00,$03,$0B,MUSIC_OVERWORLD ; FIRE_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; FIRE_CLUB_LOBBY
+ db $2E,$2F,$00,$08,$14,MUSIC_CLUB3 ; FIRE_CLUB
+ db $1C,$1D,$00,$03,$04,MUSIC_OVERWORLD ; CHALLENGE_HALL_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; CHALLENGE_HALL_LOBBY
+ db $30,$31,$00,$09,$15,MUSIC_OVERWORLD ; CHALLENGE_HALL
+ db $32,$33,$00,$0A,$16,MUSIC_OVERWORLD ; POKEMON_DOME_ENTRANCE
+ db $36,$37,$00,$0A,$17,MUSIC_POKEMONDOME ; POKEMON_DOME
+ db $3A,$3B,$00,$0A,$18,MUSIC_HALLOFHONOR ; HALL_OF_HONOR
+
+INCBIN "baserom.gbc",$1c440,$20000 - $1c440 \ No newline at end of file
diff --git a/home.asm b/engine/home.asm
index f90dd3b..f90dd3b 100755
--- a/home.asm
+++ b/engine/home.asm
diff --git a/overworldmap.asm b/engine/overworldmap.asm
index 31f762c..31f762c 100755
--- a/overworldmap.asm
+++ b/engine/overworldmap.asm
diff --git a/main.asm b/main.asm
index 3c2239c..dec0391 100755
--- a/main.asm
+++ b/main.asm
@@ -1,8 +1,7 @@
INCLUDE "constants.asm"
-
INCLUDE "macros.asm"
-INCLUDE "home.asm"
+INCLUDE "engine/home.asm"
SECTION "bank1",ROMX,BANK[$1]
Func_4000: ; 4000 (1:4000)
@@ -17,7 +16,7 @@ RST20: ; cc42 (3:4c42)
INCBIN "baserom.gbc",$CC42,$10000 - $CC42
SECTION "bank4",ROMX,BANK[$4]
-INCLUDE "overworldmap.asm"
+INCLUDE "engine/overworldmap.asm"
SECTION "bank5",ROMX,BANK[$5]
INCBIN "baserom.gbc",$14000,$4000
@@ -26,7 +25,7 @@ SECTION "bank6",ROMX,BANK[$6]
INCBIN "baserom.gbc",$18000,$4000
SECTION "bank7",ROMX,BANK[$7]
-INCBIN "baserom.gbc",$1C000,$4000
+INCLUDE "engine/bank7.asm"
SECTION "bank8",ROMX,BANK[$8]
INCBIN "baserom.gbc",$20000,$4000