summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.asm217
1 files changed, 182 insertions, 35 deletions
diff --git a/main.asm b/main.asm
index ac8e7002f..3545c81a3 100644
--- a/main.asm
+++ b/main.asm
@@ -72002,8 +72002,8 @@ Function8ccc9: ; 8ccc9
call ClearSprites
call DisableLCD
callab Function8cf53
- call Function8cdc3
- call Function8cd27
+ call SetMagnetTrainPals
+ call DrawMagnetTrain
ld a, $90
ld [hWY], a
call EnableLCD
@@ -72041,61 +72041,59 @@ Function8ccc9: ; 8ccc9
ret
; 8cd27
-Function8cd27: ; 8cd27
+DrawMagnetTrain: ; 8cd27
ld hl, VBGMap0
xor a
.asm_8cd2b
- call Function8cd74
- ld b, $10
- call Function8cd6c
+ call GetMagnetTrainBGTiles
+ ld b, 32 / 2
+ call .FillAlt
inc a
cp $12
jr c, .asm_8cd2b
ld hl, $98c0
- ld de, $4eff
- ld c, $14
- call Function8cd65
+ ld de, MagnetTrainTilemap1
+ ld c, 20
+ call .FillLine
ld hl, $98e0
- ld de, $4f13
- ld c, $14
- call Function8cd65
+ ld de, MagnetTrainTilemap2
+ ld c, 20
+ call .FillLine
ld hl, $9900
- ld de, $4f27
- ld c, $14
- call Function8cd65
+ ld de, MagnetTrainTilemap3
+ ld c, 20
+ call .FillLine
ld hl, $9920
- ld de, $4f3b
- ld c, $14
- call Function8cd65
+ ld de, MagnetTrainTilemap4
+ ld c, 20
+ call .FillLine
ret
; 8cd65
-Function8cd65: ; 8cd65
-.asm_8cd65
+.FillLine ; 8cd65
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_8cd65
+ jr nz, .FillLine
ret
; 8cd6c
-Function8cd6c: ; 8cd6c
-.asm_8cd6c
+.FillAlt ; 8cd6c
ld [hl], e
inc hl
ld [hl], d
inc hl
dec b
- jr nz, .asm_8cd6c
+ jr nz, .FillAlt
ret
; 8cd74
-Function8cd74: ; 8cd74
+GetMagnetTrainBGTiles: ; 8cd74
push hl
ld e, a
- ld d, $0
- ld hl, $4d82
+ ld d, 0
+ ld hl, MagnetTrainBGTiles
add hl, de
add hl, de
ld e, [hl]
@@ -72105,7 +72103,28 @@ Function8cd74: ; 8cd74
ret
; 8cd82
-INCBIN "baserom.gbc",$8cd82,$8cda6 - $8cd82
+MagnetTrainBGTiles: ; 8cd82
+; Alternating tiles for each line
+; of the Magnet Train tilemap.
+ db $4c, $4d ; bush
+ db $5c, $5d ; bush
+ db $4c, $4d ; bush
+ db $5c, $5d ; bush
+ db $08, $08 ; fence
+ db $18, $18 ; fence
+ db $1f, $1f ; track
+ db $31, $31 ; track
+ db $11, $11 ; track
+ db $11, $11 ; track
+ db $0d, $0d ; track
+ db $31, $31 ; track
+ db $04, $04 ; fence
+ db $18, $18 ; fence
+ db $4c, $4d ; bush
+ db $5c, $5d ; bush
+ db $4c, $4d ; bush
+ db $5c, $5d ; bush
+; 8cda6
Function8cda6: ; 8cda6
ld hl, LYOverrides
@@ -72121,25 +72140,34 @@ Function8cda6: ; 8cda6
ret
; 8cdc3
-Function8cdc3: ; 8cdc3
+SetMagnetTrainPals: ; 8cdc3
ld a, $1
ld [rVBK], a
+
+ ; bushes
ld hl, VBGMap0
ld bc, $0080
ld a, $2
call ByteFill
+
+ ; train
ld hl, $9880
ld bc, $0140
xor a
call ByteFill
+
+ ; more bushes
ld hl, $99c0
ld bc, $0080
ld a, $2
call ByteFill
+
+ ; train window
ld hl, $9907
ld bc, $0006
ld a, $4
call ByteFill
+
ld a, $0
ld [rVBK], a
ret
@@ -72148,8 +72176,8 @@ Function8cdc3: ; 8cdc3
Function8cdf7: ; 8cdf7
ld a, [$cf63]
ld e, a
- ld d, $0
- ld hl, $4e06
+ ld d, 0
+ ld hl, Jumptable_8ce06
add hl, de
add hl, de
ld a, [hli]
@@ -72158,7 +72186,124 @@ Function8cdf7: ; 8cdf7
jp [hl]
; 8ce06
-INCBIN "baserom.gbc",$8ce06,$8ceae - $8ce06
+Jumptable_8ce06: ; 8ce06
+ dw Function8ce19
+ dw Function8ce6d
+ dw Function8ce47
+ dw Function8ce6d
+ dw Function8ce7a
+ dw Function8ce6d
+ dw Function8cea2
+; 8ce14
+
+Function8ce14: ; 8ce14
+ ld hl, $cf63
+ inc [hl]
+ ret
+; 8ce19
+
+Function8ce19: ; 8ce19
+ ld d, $55
+ ld a, [$d195]
+ ld e, a
+ ld b, $15
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_8ce31
+ ld b, $1f
+
+.asm_8ce31
+ pop af
+ ld [rSVBK], a
+ ld a, b
+ call Function3b2a
+ ld hl, $0003
+ add hl, bc
+ ld [hl], $0
+ call Function8ce14
+ ld a, $80
+ ld [$cf66], a
+ ret
+; 8ce47
+
+Function8ce47: ; 8ce47
+ ld hl, $d193
+ ld a, [$cf65]
+ cp [hl]
+ jr z, .asm_8ce64
+ ld e, a
+ ld a, [$d191]
+ xor $ff
+ inc a
+ add e
+ ld [$cf65], a
+ ld hl, $c3c0
+ ld a, [$d191]
+ add [hl]
+ ld [hl], a
+ ret
+
+.asm_8ce64
+ call Function8ce14
+ ld a, $80
+ ld [$cf66], a
+ ret
+; 8ce6d
+
+Function8ce6d: ; 8ce6d
+ ld hl, $cf66
+ ld a, [hl]
+ and a
+ jr z, .asm_8ce76
+ dec [hl]
+ ret
+
+.asm_8ce76
+ call Function8ce14
+ ret
+; 8ce7a
+
+Function8ce7a: ; 8ce7a
+ ld hl, $d194
+ ld a, [$cf65]
+ cp [hl]
+ jr z, .asm_8ce9e
+ ld e, a
+ ld a, [$d191]
+ xor $ff
+ inc a
+ ld d, a
+ ld a, e
+ add d
+ add d
+ ld [$cf65], a
+ ld hl, $c3c0
+ ld a, [$d191]
+ ld d, a
+ ld a, [hl]
+ add d
+ add d
+ ld [hl], a
+ ret
+
+ ret
+
+.asm_8ce9e
+ call Function8ce14
+ ret
+; 8cea2
+
+Function8cea2: ; 8cea2
+ ld a, $80
+ ld [$cf63], a
+ ld de, SFX_TRAIN_ARRIVED
+ call PlaySFX
+ ret
+; 8ceae
Function8ceae: ; 8ceae
callba Function8cf69
@@ -72197,7 +72342,11 @@ Function8ceae: ; 8ceae
ret
; 8ceff
-INCBIN "baserom.gbc",$8ceff,$8cf4f - $8ceff
+MagnetTrainTilemap1: db $1f, $05, $06, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0b, $0c, $1f
+MagnetTrainTilemap2: db $14, $15, $16, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1b, $1c, $1d
+MagnetTrainTilemap3: db $24, $25, $26, $27, $07, $2f, $29, $28, $28, $28, $28, $28, $28, $29, $07, $2f, $2a, $2b, $2c, $2d
+MagnetTrainTilemap4: db $20, $1f, $2e, $1f, $17, $00, $2e, $1f, $1f, $1f, $1f, $1f, $1f, $2e, $17, $00, $1f, $2e, $1f, $0f
+; 8cf4f
Function8cf4f: ; 8cf4f
call Function3238
@@ -72224,8 +72373,6 @@ Function8cf62: ; 8cf62
ret
; 8cf69
-
-
Function8cf69: ; 8cf69
push hl
push de