shithub: pokered

Download patch

ref: 01fe449837bef1c289d37477745774555d22786e
parent: 98f09b6d26b1f83bdf1779cfe63a73b8a4265aef
author: Pokeglitch <pokeglitchx@gmail.com>
date: Fri Jun 22 19:06:05 EDT 2018

Updated the intro

--- a/constants/hardware_constants.asm
+++ b/constants/hardware_constants.asm
@@ -22,14 +22,6 @@
 
 LY_VBLANK EQU 145
 
-; OAM attribute flags
-OAM_PALETTE   EQU %111
-OAM_TILE_BANK EQU 3
-OAM_OBP_NUM   EQU 4 ; Non CGB Mode Only
-OAM_X_FLIP    EQU 5
-OAM_Y_FLIP    EQU 6
-OAM_PRIORITY  EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
-
 ; serial
 START_TRANSFER_EXTERNAL_CLOCK EQU $80
 START_TRANSFER_INTERNAL_CLOCK EQU $81
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -45,6 +45,8 @@
 SCREEN_WIDTH_PIXELS  EQU SCREEN_WIDTH * 8
 SCREEN_HEIGHT_PIXELS EQU SCREEN_HEIGHT * 8
 
+BYTES_PER_TILE EQU 16
+
 BG_MAP_WIDTH  EQU 32
 BG_MAP_HEIGHT EQU 32
 
--- a/constants/oam_constants.asm
+++ b/constants/oam_constants.asm
@@ -5,5 +5,14 @@
 ; Used for making left facing sprites face right and to alternate between left and right foot animation when walking up or down
 
 ; OAM attribute flags
-OAM_HFLIP EQU %00100000 ; horizontal flip
-OAM_VFLIP EQU %01000000 ; vertical flip
+OAM_PALETTE   EQU %111
+OAM_TILE_BANK EQU 3
+OAM_OBP_NUM   EQU 4 ; Non CGB Mode Only
+OAM_X_FLIP    EQU 5
+OAM_Y_FLIP    EQU 6
+OAM_PRIORITY  EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
+
+; OAM attribute masks
+OAM_HFLIP     EQU 1 << OAM_X_FLIP ; horizontal flip
+OAM_VFLIP     EQU 1 << OAM_Y_FLIP ; vertical flip
+OAM_BEHIND_BG EQU 1 << OAM_PRIORITY ; behind bg (except color 0)
--- a/constants/palette_constants.asm
+++ b/constants/palette_constants.asm
@@ -1,3 +1,10 @@
+; monochrome palette color ids
+	const_def
+	const WHITE
+	const LIGHT_GRAY
+	const DARK_GRAY
+	const BLACK
+
 SET_PAL_BATTLE_BLACK         EQU $00
 SET_PAL_BATTLE               EQU $01
 SET_PAL_TOWN_MAP             EQU $02
--- a/engine/battle/animations.asm
+++ b/engine/battle/animations.asm
@@ -2588,21 +2588,21 @@
 
 TileIDListPointerTable:
 	dw Unknown_79b24
-	db $77
+	dn 7, 7
 	dw Unknown_79b55
-	db $57
+	dn 5, 7
 	dw Unknown_79b78
-	db $37
-	dw Unknown_79b8d
-	db $77
-	dw Unknown_79bbe
-	db $77
-	dw Unknown_79bef
-	db $77
+	dn 3, 7
+	dw GengarIntroTiles1
+	dn 7, 7
+	dw GengarIntroTiles2
+	dn 7, 7
+	dw GengarIntroTiles3
+	dn 7, 7
 	dw Unknown_79c20
-	db $86
+	dn 8, 6
 	dw Unknown_79c50
-	db $3C
+	dn 3, 12
 
 DownscaledMonTiles_5x5:
 	db $31,$38,$46,$54,$5B
@@ -2637,7 +2637,7 @@
 	db $02,$09,$10,$17,$1E,$25,$2C
 	db $04,$0B,$12,$19,$20,$27,$2E
 
-Unknown_79b8d:
+GengarIntroTiles1:
 	db $00,$00,$00,$00,$00,$00,$00
 	db $00,$00,$00,$00,$00,$19,$00
 	db $02,$06,$0B,$10,$14,$1A,$00
@@ -2646,7 +2646,7 @@
 	db $04,$09,$0E,$13,$17,$1D,$1F
 	db $05,$0A,$0F,$01,$18,$1E,$20
 
-Unknown_79bbe:
+GengarIntroTiles2:
 	db $00,$00,$00,$30,$00,$37,$00
 	db $00,$00,$2B,$31,$34,$38,$3D
 	db $21,$26,$2C,$01,$35,$39,$3E
@@ -2655,7 +2655,7 @@
 	db $24,$29,$2F,$01,$01,$3B,$00
 	db $25,$2A,$01,$01,$01,$3C,$00
 
-Unknown_79bef:
+GengarIntroTiles3:
 	db $00,$00,$00,$00,$00,$00,$00
 	db $00,$00,$47,$4D,$00,$00,$00
 	db $00,$00,$48,$4E,$52,$56,$5B
--- a/engine/intro.asm
+++ b/engine/intro.asm
@@ -1,7 +1,13 @@
-MOVE_GENGAR_RIGHT   EQU $00
-MOVE_GENGAR_LEFT    EQU $01
-MOVE_NIDORINO_RIGHT EQU $ff
+MOVE_GENGAR_RIGHT   EQU 0
+MOVE_GENGAR_LEFT    EQU 1
+MOVE_NIDORINO_RIGHT EQU -1
 
+ANIMATION_END       EQU 80
+
+GENGAR_INTRO_TILES1 EQU 3
+GENGAR_INTRO_TILES2 EQU 4
+GENGAR_INTRO_TILES3 EQU 5
+
 PlayIntro:
 	xor a
 	ld [hJoyHeld], a
@@ -20,13 +26,13 @@
 PlayIntroScene:
 	ld b, SET_PAL_NIDORINO_INTRO
 	call RunPaletteCommand
-	ld a, %11100100
+	ldPal a, BLACK, DARK_GRAY, LIGHT_GRAY, WHITE
 	ld [rBGP], a
 	ld [rOBP0], a
 	ld [rOBP1], a
 	xor a
 	ld [hSCX], a
-	ld b, $3 ; Gengar tiles
+	ld b, GENGAR_INTRO_TILES1
 	call IntroCopyTiles
 	ld a, 0
 	ld [wBaseCoordX], a
@@ -50,7 +56,7 @@
 	call PlaySound
 	ld de, IntroNidorinoAnimation2
 	call AnimateIntroNidorino
-	ld c, $a
+	ld c, 10
 	call CheckForUserInterruption
 	ret c
 
@@ -64,23 +70,23 @@
 	call PlaySound
 	ld de, IntroNidorinoAnimation2
 	call AnimateIntroNidorino
-	ld c, $1e
+	ld c, 30
 	call CheckForUserInterruption
 	ret c
 
 ; raise
-	ld b, $4
+	ld b, GENGAR_INTRO_TILES2
 	call IntroCopyTiles
 	ld a, SFX_INTRO_RAISE
 	call PlaySound
 	lb de, 8 / 2, MOVE_GENGAR_LEFT
 	call IntroMoveMon
-	ld c, $1e
+	ld c, 30
 	call CheckForUserInterruption
 	ret c
 
 ; slash
-	ld b, $5
+	ld b, GENGAR_INTRO_TILES3
 	call IntroCopyTiles
 	ld a, SFX_INTRO_CRASH
 	call PlaySound
@@ -89,19 +95,19 @@
 ; hip
 	ld a, SFX_INTRO_HIP
 	call PlaySound
-	ld a, $24
+	ld a, (FightIntroFrontMon2 - FightIntroFrontMon) / BYTES_PER_TILE
 	ld [wIntroNidorinoBaseTile], a
 	ld de, IntroNidorinoAnimation3
 	call AnimateIntroNidorino
-	ld c, $1e
+	ld c, 30
 	call CheckForUserInterruption
 	ret c
 
 	lb de, 8 / 2, MOVE_GENGAR_LEFT
 	call IntroMoveMon
-	ld b, $3
+	ld b, GENGAR_INTRO_TILES1
 	call IntroCopyTiles
-	ld c, $3c
+	ld c, 60
 	call CheckForUserInterruption
 	ret c
 
@@ -117,15 +123,15 @@
 	call PlaySound
 	ld de, IntroNidorinoAnimation5
 	call AnimateIntroNidorino
-	ld c, $14
+	ld c, 20
 	call CheckForUserInterruption
 	ret c
 
-	ld a, $24
+	ld a, (FightIntroFrontMon2 - FightIntroFrontMon) / BYTES_PER_TILE
 	ld [wIntroNidorinoBaseTile], a
 	ld de, IntroNidorinoAnimation6
 	call AnimateIntroNidorino
-	ld c, $1e
+	ld c, 30
 	call CheckForUserInterruption
 	ret c
 
@@ -132,7 +138,7 @@
 ; lunge
 	ld a, SFX_INTRO_LUNGE
 	call PlaySound
-	ld a, $48
+	ld a, (FightIntroFrontMon3 - FightIntroFrontMon) / BYTES_PER_TILE
 	ld [wIntroNidorinoBaseTile], a
 	ld de, IntroNidorinoAnimation7
 	jp AnimateIntroNidorino
@@ -139,7 +145,7 @@
 
 AnimateIntroNidorino:
 	ld a, [de]
-	cp $50
+	cp ANIMATION_END
 	ret z
 	ld [wBaseCoordY], a
 	inc de
@@ -189,7 +195,7 @@
 	ld [hli], a ; X
 	ld a, d
 	ld [hli], a ; tile
-	ld a, $80
+	ld a, OAM_BEHIND_BG
 	ld [hli], a ; attributes
 	inc d
 	dec c
@@ -204,7 +210,7 @@
 
 IntroClearScreen:
 	ld hl, vBGMap1
-	ld bc, $240
+	ld bc, BG_MAP_WIDTH * SCREEN_HEIGHT
 	jr IntroClearCommon
 
 IntroClearMiddleOfScreen:
@@ -213,7 +219,7 @@
 	ld bc, SCREEN_WIDTH * 10
 
 IntroClearCommon:
-	ld [hl], $0
+	ld [hl], 0
 	inc hl
 	dec bc
 	ld a, b
@@ -222,7 +228,7 @@
 	ret
 
 IntroPlaceBlackTiles:
-	ld a, $1
+	ld a, 1
 .loop
 	ld [hli], a
 	dec c
@@ -231,11 +237,11 @@
 
 IntroMoveMon:
 ; d = number of times to move the mon (2 pixels each time)
-; e: $00 = move Gengar right, $01 = move Gengar left, $ff = move Nidorino right
+; e: 0 = move Gengar right, 1 = move Gengar left, -1 = move Nidorino right
 	ld a, e
-	cp $ff
+	cp -1
 	jr z, .moveNidorinoRight
-	cp $1
+	cp 1
 	jr z, .moveGengarLeft
 ; move Gengar right
 	ld a, [hSCX]
@@ -286,7 +292,7 @@
 	ld a, BANK(FightIntroBackMon)
 	call FarCopyData2
 	ld hl, GameFreakIntro
-	ld de, vChars2 + $600
+	ld de, vChars2 + (FightIntroBackMonEnd - FightIntroBackMon)
 	ld bc, GameFreakIntroEnd - GameFreakIntro
 	ld a, BANK(GameFreakIntro)
 	call FarCopyData2
@@ -305,7 +311,7 @@
 	ld b, SET_PAL_GAME_FREAK_INTRO
 	call RunPaletteCommand
 	callba LoadCopyrightAndTextBoxTiles
-	ld a, %11100100
+	ldPal a, BLACK, DARK_GRAY, LIGHT_GRAY, WHITE
 	ld [rBGP], a
 	ld c, 180
 	call DelayFrames
@@ -348,10 +354,10 @@
 	ld c, SCREEN_WIDTH * 4
 	call IntroPlaceBlackTiles
 	ld hl, vBGMap1
-	ld c, $80
+	ld c,  BG_MAP_WIDTH * 4
 	call IntroPlaceBlackTiles
-	ld hl, vBGMap1 + $1c0
-	ld c, $80
+	ld hl, vBGMap1 + BG_MAP_WIDTH * 14
+	ld c,  BG_MAP_WIDTH * 4
 	jp IntroPlaceBlackTiles
 
 EmptyFunc4:
@@ -359,7 +365,7 @@
 
 IntroNidorinoAnimation0:
 	db 0, 0
-	db $50
+	db ANIMATION_END
 
 IntroNidorinoAnimation1:
 ; This is a sequence of pixel movements for part of the Nidorino animation. This
@@ -370,7 +376,7 @@
 	db -1, 2
 	db  1, 2
 	db  2, 2
-	db $50 ; list terminator
+	db ANIMATION_END
 
 IntroNidorinoAnimation2:
 ; This is a sequence of pixel movements for part of the Nidorino animation.
@@ -380,7 +386,7 @@
 	db -1, -2
 	db  1, -2
 	db  2, -2
-	db $50 ; list terminator
+	db ANIMATION_END
 
 IntroNidorinoAnimation3:
 ; This is a sequence of pixel movements for part of the Nidorino animation.
@@ -390,7 +396,7 @@
 	db  -8, 6
 	db   8, 6
 	db  12, 6
-	db $50 ; list terminator
+	db ANIMATION_END
 
 IntroNidorinoAnimation4:
 ; This is a sequence of pixel movements for part of the Nidorino animation.
@@ -400,7 +406,7 @@
 	db -4, -4
 	db  4, -4
 	db  8, -4
-	db $50 ; list terminator
+	db ANIMATION_END
 
 IntroNidorinoAnimation5:
 ; This is a sequence of pixel movements for part of the Nidorino animation.
@@ -410,7 +416,7 @@
 	db -4, 4
 	db  4, 4
 	db  8, 4
-	db $50 ; list terminator
+	db ANIMATION_END
 
 IntroNidorinoAnimation6:
 ; This is a sequence of pixel movements for part of the Nidorino animation.
@@ -419,7 +425,7 @@
 	db 2, 0
 	db 2, 0
 	db 0, 0
-	db $50 ; list terminator
+	db ANIMATION_END
 
 IntroNidorinoAnimation7:
 ; This is a sequence of pixel movements for part of the Nidorino animation.
@@ -428,7 +434,7 @@
 	db -7, -14
 	db -6, -12
 	db -4, -10
-	db $50 ; list terminator
+	db ANIMATION_END
 
 GameFreakIntro:
 	INCBIN "gfx/gamefreak_intro.2bpp"
@@ -444,12 +450,17 @@
 
 IF DEF(_RED)
 	INCBIN "gfx/red/intro_nido_1.2bpp"
+FightIntroFrontMon2:
 	INCBIN "gfx/red/intro_nido_2.2bpp"
+FightIntroFrontMon3:
 	INCBIN "gfx/red/intro_nido_3.2bpp"
 ENDC
+
 IF DEF(_BLUE)
 	INCBIN "gfx/blue/intro_purin_1.2bpp"
+FightIntroFrontMon2:
 	INCBIN "gfx/blue/intro_purin_2.2bpp"
+FightIntroFrontMon3:
 	INCBIN "gfx/blue/intro_purin_3.2bpp"
 ENDC
 
--- a/macros/asm_macros.asm
+++ b/macros/asm_macros.asm
@@ -186,3 +186,7 @@
 	tx_pre_id \1
 	jp PrintPredefTextID
 ENDM
+
+ldPal: MACRO
+	ld \1, \2 << 6 | \3 << 4 | \4 << 2 | \5
+ENDM