mirror of
https://github.com/everything8215/ff6.git
synced 2024-10-07 02:23:31 +00:00
Compressed cutscene code
Improved how cutscene code gets compressed and linked into the ROM. Also added rev. 1 of English version
This commit is contained in:
parent
4c5934f203
commit
e60dbbf938
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,5 +1,6 @@
|
||||
.DS_Store
|
||||
*.sfc
|
||||
*.lz
|
||||
*.bin
|
||||
*.o
|
||||
*.lst
|
||||
|
48
Makefile
48
Makefile
@ -70,39 +70,43 @@ OBJ_FILES_JP = $(foreach M, $(MODULES), $(M)/obj/$(M)_jp.o)
|
||||
OBJ_FILES_EN = $(foreach M, $(MODULES), $(M)/obj/$(M)_en.o)
|
||||
OBJ_FILES_EN1 = $(foreach M, $(MODULES), $(M)/obj/$(M)_en1.o)
|
||||
|
||||
# compressed cutscene program
|
||||
CUTSCENE_LZ = cutscene/lz/cutscene.lz
|
||||
|
||||
# rules for making ROM files
|
||||
# run linker twice: 1st for the cutscene program, 2nd for the ROM itself
|
||||
cutscene/data/cutscene_jp.lz: ff6-en.lnk $(OBJ_FILES_JP)
|
||||
$(FF6_JP_PATH): ff6-jp.cfg encode-jp $(OBJ_FILES_JP)
|
||||
@mkdir -p cutscene/lz
|
||||
$(LINK) $(LINKFLAGS) -o "" -C $< $(OBJ_FILES_JP)
|
||||
${LZSS} $(@:lz=bin) $@
|
||||
$(MAKE) -C cutscene
|
||||
${LZSS} $(CUTSCENE_LZ:lz=bin) $(CUTSCENE_LZ)
|
||||
$(MAKE) -C cutscene lz
|
||||
@mkdir -p rom
|
||||
$(LINK) $(LINKFLAGS) -m $(@:sfc=map) -o $@ -C $< $(OBJ_FILES_JP) $(CUTSCENE_LZ).o
|
||||
@$(RM) -r cutscene/lz
|
||||
node tools/calc-checksum.js $@
|
||||
|
||||
cutscene/data/cutscene_en.lz: ff6-en.lnk $(OBJ_FILES_EN)
|
||||
$(FF6_EN_PATH): ff6-en.cfg encode-en $(OBJ_FILES_EN)
|
||||
@mkdir -p cutscene/lz
|
||||
$(LINK) $(LINKFLAGS) -o "" -C $< $(OBJ_FILES_EN)
|
||||
${LZSS} $(@:lz=bin) $@
|
||||
$(MAKE) -C cutscene
|
||||
${LZSS} $(CUTSCENE_LZ:lz=bin) $(CUTSCENE_LZ)
|
||||
$(MAKE) -C cutscene lz
|
||||
@mkdir -p rom
|
||||
$(LINK) $(LINKFLAGS) -m $(@:sfc=map) -o $@ -C $< $(OBJ_FILES_EN) $(CUTSCENE_LZ).o
|
||||
@$(RM) -r cutscene/lz
|
||||
node tools/calc-checksum.js $@
|
||||
|
||||
cutscene/data/cutscene_en1.lz: ff6-en.lnk $(OBJ_FILES_EN1)
|
||||
$(FF6_EN1_PATH): ff6-en.cfg encode-en $(OBJ_FILES_EN1)
|
||||
@mkdir -p cutscene/lz
|
||||
$(LINK) $(LINKFLAGS) -o "" -C $< $(OBJ_FILES_EN1)
|
||||
${LZSS} $(@:lz=bin) $@
|
||||
$(MAKE) -C cutscene
|
||||
|
||||
$(FF6_JP_PATH): ff6-jp.lnk encode-jp $(OBJ_FILES_JP)
|
||||
${LZSS} $(CUTSCENE_LZ:lz=bin) $(CUTSCENE_LZ)
|
||||
$(MAKE) -C cutscene lz
|
||||
@mkdir -p rom
|
||||
$(LINK) $(LINKFLAGS) -m $(@:sfc=map) -o $@ -C $< $(OBJ_FILES_JP)
|
||||
node tools/calc-checksum.js $@
|
||||
|
||||
$(FF6_EN_PATH): ff6-en.lnk encode-en cutscene/data/cutscene_en.lz $(OBJ_FILES_EN)
|
||||
@mkdir -p rom
|
||||
$(LINK) $(LINKFLAGS) -m $(@:sfc=map) -o $@ -C $< $(OBJ_FILES_EN)
|
||||
node tools/calc-checksum.js $@
|
||||
|
||||
$(FF6_EN1_PATH): ff6-en.lnk encode-en $(OBJ_FILES_EN1)
|
||||
@mkdir -p rom
|
||||
$(LINK) $(LINKFLAGS) -m $(@:sfc=map) -o $@ -C $< $(OBJ_FILES_EN1)
|
||||
$(LINK) $(LINKFLAGS) -m $(@:sfc=map) -o $@ -C $< $(OBJ_FILES_EN1) $(CUTSCENE_LZ).o
|
||||
@$(RM) -r cutscene/lz
|
||||
node tools/calc-checksum.js $@
|
||||
|
||||
# run sub-make to create object files for each module
|
||||
# $(OBJ_FILES): $(MODULES)
|
||||
$(OBJ_FILES_JP): $(MODULES)
|
||||
$(OBJ_FILES_EN): $(MODULES)
|
||||
$(OBJ_FILES_EN1): $(MODULES)
|
||||
|
@ -14040,7 +14040,7 @@ DrawDlgLetter:
|
||||
sta $24
|
||||
jsr Mult8
|
||||
lda $4b
|
||||
jne $6256
|
||||
jne _c16256
|
||||
lda $7a
|
||||
and #$f8
|
||||
longa
|
||||
@ -14179,6 +14179,7 @@ _c1624e:
|
||||
|
||||
; [ ]
|
||||
|
||||
_c16256:
|
||||
@6256: lda $7a
|
||||
and #$07
|
||||
tax
|
||||
@ -18721,7 +18722,7 @@ UpdateMenuState_0e:
|
||||
lda $2094,x
|
||||
sta $7a84
|
||||
and #$40
|
||||
jeq $55b0
|
||||
jeq UpdateMenuState_3f
|
||||
jmp _c17795
|
||||
@81eb: inc $95 ; play error sound effect
|
||||
|
||||
@ -19747,7 +19748,7 @@ UpdateMenuState_0a:
|
||||
stz $7a1e
|
||||
stz $ecba
|
||||
and #$40
|
||||
jeq $55b0
|
||||
jeq UpdateMenuState_3f
|
||||
jmp _c17795
|
||||
@893b: lda $09
|
||||
bpl @8963
|
||||
@ -27978,7 +27979,7 @@ CalcAttackerPos:
|
||||
|
||||
get_pointer_main:
|
||||
_c4a0: sta $ecb1 ; characer/monster number
|
||||
jmi $c58f ; branch if a monster
|
||||
jmi @c58f ; branch if a monster
|
||||
|
||||
; character
|
||||
asl
|
||||
@ -35287,7 +35288,7 @@ magic_code0f:
|
||||
lda $7b10,y ; character facing direction
|
||||
eor $6f88,x ; animation direction
|
||||
and #$01
|
||||
jeq $f377 ; move thread
|
||||
jeq AnimCmd_83 ; move thread
|
||||
@f279: rts
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
@ -35330,7 +35331,7 @@ magic_code1c:
|
||||
tay
|
||||
lda $7b10,y
|
||||
and #$01
|
||||
jeq $f377
|
||||
jeq AnimCmd_83
|
||||
@f2b5: rts
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
|
@ -11,7 +11,7 @@ DATA_FILES = $(wildcard data/*)
|
||||
GFX_FILES = $(wildcard gfx/*)
|
||||
TEXT_FILES = $(wildcard text/*)
|
||||
|
||||
.PHONY: all clean
|
||||
.PHONY: all clean lz
|
||||
|
||||
# disable default suffix rules
|
||||
.SUFFIXES:
|
||||
@ -19,12 +19,19 @@ TEXT_FILES = $(wildcard text/*)
|
||||
all: $(TARGET)
|
||||
|
||||
clean:
|
||||
$(RM) -r $(OBJ_DIR) data gfx text
|
||||
$(RM) -r $(OBJ_DIR) data gfx text lz
|
||||
|
||||
# first ensure that the compressed cutscene program file exists
|
||||
# it will just be an empty file the first time the linker is run
|
||||
$(TARGET): $(SRC_FILES) $(INC_FILES) $(DATA_FILES) $(GFX_FILES) $(TEXT_FILES)
|
||||
@mkdir -p data
|
||||
@touch data/cutscene_$(VERSION_EXT).lz
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(ASM) $(ASMFLAGS) -I $(INC_DIR) -l $(@:o=lst) $(SRC_MAIN) -o $@
|
||||
|
||||
LZ_DIR = lz
|
||||
LZ_SRC = $(NAME)_lz.asm
|
||||
LZ_DATA = $(LZ_DIR)/$(NAME).lz
|
||||
LZ_TARGET = $(LZ_DATA).o
|
||||
|
||||
lz: $(LZ_TARGET)
|
||||
|
||||
# rule to generate an object file for the compressed cutscene program
|
||||
$(LZ_TARGET): $(LZ_DATA)
|
||||
$(ASM) $(ASMFLAGS) -I $(INC_DIR) $(LZ_SRC) -o $@
|
||||
|
@ -53,26 +53,26 @@ WorldOfRuinScene_ext:
|
||||
; ------------------------------------------------------------------------------
|
||||
|
||||
TitleScreen:
|
||||
@680c: jsr DecompCutsceneProg
|
||||
jml TitleScreen_ext2
|
||||
@680c: jsr DecompCutsceneProg
|
||||
jml TitleScreen_ext2
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
|
||||
OpeningCredits:
|
||||
@6813: jsr DecompCutsceneProg
|
||||
jml OpeningCredits_ext2
|
||||
@6813: jsr DecompCutsceneProg
|
||||
jml OpeningCredits_ext2
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
|
||||
FloatingContScene:
|
||||
@681a: jsr DecompCutsceneProg
|
||||
jml FloatingContScene_ext2
|
||||
@681a: jsr DecompCutsceneProg
|
||||
jml FloatingContScene_ext2
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
|
||||
WorldOfRuinScene:
|
||||
@6821: jsr DecompCutsceneProg
|
||||
jml WorldOfRuinScene_ext2
|
||||
@6821: jsr DecompCutsceneProg
|
||||
jml WorldOfRuinScene_ext2
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
|
||||
@ -94,7 +94,7 @@ DecompCutsceneProg:
|
||||
ldx #$0000
|
||||
phx
|
||||
pld
|
||||
ldx #$0000
|
||||
ldx #0
|
||||
stx $00
|
||||
lda #$7e
|
||||
sta hWMADDH
|
||||
@ -123,9 +123,10 @@ DecompCutsceneProg:
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
|
||||
.segment "cutscene_lz"
|
||||
|
||||
; c2/686c
|
||||
CutsceneProg:
|
||||
.incbin "data/cutscene_en.lz"
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
|
||||
|
20
cutscene/cutscene_lz.asm
Normal file
20
cutscene/cutscene_lz.asm
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
; +----------------------------------------------------------------------------+
|
||||
; | |
|
||||
; | FINAL FANTASY VI |
|
||||
; | |
|
||||
; +----------------------------------------------------------------------------+
|
||||
; | file: cutscene_lz.asm |
|
||||
; | |
|
||||
; | description: generates compressed cutscene obj file |
|
||||
; | |
|
||||
; | created: 12/7/2022 |
|
||||
; +----------------------------------------------------------------------------+
|
||||
|
||||
; ------------------------------------------------------------------------------
|
||||
|
||||
.segment "cutscene_lz"
|
||||
|
||||
.incbin "lz/cutscene.lz" ; c2/686c
|
||||
|
||||
; ------------------------------------------------------------------------------
|
@ -2,7 +2,7 @@ memory {
|
||||
ram: start = $000000, size = $2000, type = rw;
|
||||
wram: start = $7e2000, size = $01e000, type = rw;
|
||||
sram: start = $306000, size = $2000, type = rw;
|
||||
bank_7e: start = $7e5000, size = $3000, type = ro, fill = no, file = "cutscene/data/cutscene_en.bin";
|
||||
bank_7e: start = $7e5000, size = $3000, type = ro, fill = no, file = "cutscene/lz/cutscene.bin";
|
||||
bank_c0: start = $c00000, size = $10000, type = ro, fill = yes, fillval = $ff;
|
||||
bank_c1: start = $c10000, size = $10000, type = ro, fill = yes, fillval = $ff;
|
||||
bank_c2: start = $c20000, size = $10000, type = ro, fill = yes, fillval = $ff;
|
||||
@ -45,6 +45,7 @@ segments {
|
||||
btlgfx_code: load = bank_c1, type = ro;
|
||||
battle_code: load = bank_c2, type = ro;
|
||||
cutscene_code: load = bank_c2, type = ro, start = $c26800;
|
||||
cutscene_lz: load = bank_c2, type = ro;
|
||||
ending_anim1: load = bank_c2, type = ro, start = $c28a70;
|
||||
btlgfx_code2: load = bank_c2, type = ro, start = $c2a800;
|
||||
decompress_code: load = bank_c2, type = ro, start = $c2fc6d;
|
@ -22,14 +22,20 @@
|
||||
.endif
|
||||
.endmacro
|
||||
|
||||
def_config ROM_VERSION,0
|
||||
def_config DEBUG,0
|
||||
def_config LANG_EN,0
|
||||
def_config LANG_EN_REV1,0
|
||||
|
||||
.if LANG_EN
|
||||
.define LANG_SUFFIX "en"
|
||||
.if (LANG_EN .and ROM_VERSION)
|
||||
LANG_EN_REV1 = 1
|
||||
.else
|
||||
.define LANG_SUFFIX "jp"
|
||||
LANG_EN_REV1 = 0
|
||||
.endif
|
||||
|
||||
; define language suffix
|
||||
.if LANG_EN
|
||||
.define LANG_SUFFIX "en"
|
||||
.else
|
||||
.define LANG_SUFFIX "jp"
|
||||
.endif
|
||||
|
||||
.list on
|
||||
|
Loading…
Reference in New Issue
Block a user