Skip to content

Commit

Permalink
level subtitles
Browse files Browse the repository at this point in the history
  • Loading branch information
nstbayless committed Apr 22, 2023
1 parent e05c61f commit ffbaac7
Show file tree
Hide file tree
Showing 7 changed files with 159 additions and 68 deletions.
4 changes: 2 additions & 2 deletions src/asm/mappermages.asm
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ BASE $C000
FROM $DAEC
new_reset_vector:
lda #$0
sta $fff8
sta $fff0
jmp $9957 # jump to old entry point

FROM $DAF4
Expand All @@ -17,7 +17,7 @@ unknown_a:
sta $ffe8
ldy #$0
lda ($c0), y
sty $fff8
sty $fff0
rts

# TODO...
Expand Down
54 changes: 46 additions & 8 deletions src/asm/patch.asm
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,44 @@ endif

FROM $db36:

ifdef STAGE_NAMES
stage_name:
; where to write stage name
ldx #$20
lda #($66 << 1)
JSR $E909
LDA stagename_table_ptr+1
beq skip
TAY
LDA stagename_table_ptr
LDX current_level
STX $0582
; switch bank
LDX #$1
STX $FFE8
JSR $E924
JSR $E945
; restore bank
LDX #$0
STX $FFF0
; 'Tower ' text coordinates
ldx #$56
skip:
clc
RTS
endif

ifdef PLACE_OBJECTS
colx=$30
coly=$31
place_objects_mask_coords:
place_objects_mask_coords:
AND colx
STA colx
LDA $CE
LDA camera_screen
STA $B
LDA coly
SEC
Expand All @@ -74,7 +105,7 @@ ifdef PLACE_OBJECTS
STA coly
RTS
place_objects_chest:
place_objects_chest:
LDA #$F0
JSR place_objects_mask_coords
JSR place_objects_scan
Expand All @@ -86,7 +117,7 @@ ifdef PLACE_OBJECTS
AND #$F
JMP $C49B
place_objects_crate:
place_objects_crate:
LDA #$F8
JSR place_objects_mask_coords
JSR place_objects_scan
Expand Down Expand Up @@ -116,7 +147,7 @@ ifdef PLACE_OBJECTS
LDY current_level
LDA objects_table,Y
STA $8
LDA objects_table+13,Y
LDA objects_table+$E,Y ; + number of levels
STA $9
BEQ place_objects_failure
LDY #$0
Expand Down Expand Up @@ -150,7 +181,7 @@ ifdef PLACE_OBJECTS
RTS
endif

ifdef UNITILE
ifdef UNITILE
next0:
LDY #$0
LDA ($00),Y
Expand Down Expand Up @@ -378,11 +409,11 @@ ifdef UNITILE
; return from unitile calculation
RTS
if $ > $DCD1
if $ > $DCFE
error "unitile patch space exceeded"
endif
FROM $DCD1
FROM $DCFE
objects_table:
SKIP $1C
unitile_level_table:
Expand Down Expand Up @@ -510,6 +541,13 @@ ifdef PLACE_OBJECTS
NOP
endif

ifdef STAGE_NAMES
FROM $D634
JSR stage_name
FROM $FFF8
stagename_table_ptr:
endif

FROM $E94F:
text_print_continue:

Expand Down
1 change: 1 addition & 0 deletions src/asm/pre.asm
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ ENDM

IFDEF UNITILE
PLACE_OBJECTS=1
STAGE_NAMES=1
ENDIF
63 changes: 34 additions & 29 deletions src/asmpy/patches_unitile.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,44 @@
# This file was auto-generated. Please run :/src/asm/build.sh

PATCHES = [
(0x4481, bytearray.fromhex("4C 64 DB")),
(0x4481, bytearray.fromhex("4C 8D DB")),

(0x44a7, bytearray.fromhex("4C 50 DB EA")),
(0x44a7, bytearray.fromhex("4C 79 DB EA")),

(0x5644, bytearray.fromhex("20 36 DB")),

(0x5b46, bytearray.fromhex("""
25 30 85 30 A5 CE 85 0B A5 31 38 E5 18 C5 CD B0
02 E6 0B A9 F8 25 31 85 31 60 A9 F0 20 36 DB 20
86 DB 90 03 4C A1 C4 A5 7F 29 0F 4C 9B C4 A9 F8
20 36 DB 20 86 DB 90 03 4C 91 C4 A5 7F 4A 4C 74
C4 B1 08 48 E6 08 D0 02 E6 09 68 60 A4 0A 18 60
84 0A A4 BC B9 D1 DC 85 08 B9 DE DC 85 09 F0 EC
A0 00 20 77 DB 20 77 DB 20 77 DB 20 77 DB C9 01
F0 DA C5 30 D0 EC 20 77 DB C5 31 D0 E8 20 77 DB
C5 0B D0 E4 20 77 DB A4 0A 20 4D 8B 38 60 A0 00
B1 00 A8 E6 00 D0 02 E6 01 98 60 8A 48 98 48 A5
00 48 A5 01 48 A5 02 48 A5 03 48 A5 04 48 A5 05
48 A5 BC 0A A8 B9 D0 DA 85 00 38 A5 C0 E5 00 4A
4A 0A 85 00 C6 00 C6 00 AD C9 05 4A 4A 4A 4A 29
01 05 00 85 02 A9 00 85 03 85 04 A5 BC 0A 0A 85
00 A5 02 4A 4A 4A 4A 29 03 85 04 05 00 0A A8 B9
ED DC 85 00 B9 EE DC 85 01 05 00 F0 22 20 C4 DB
C9 FE F0 7C 48 29 E0 AA A5 03 4A 4A 4A 4A 85 05
A5 04 0A 0A 0A 0A 05 05 C5 02 90 47 F0 04 68 4C
B6 DC 8A F0 1A C9 E0 F0 42 24 6F 50 06 29 20 D0
37 F0 0C 10 06 29 40 D0 2F F0 04 29 80 D0 29 A5
02 48 0A 0A 0A 0A 85 02 38 A9 F0 E5 02 85 02 A5
03 29 0F 18 65 02 AA 68 85 02 20 C4 DB 9D 00 06
4C A1 DC 8A C9 E0 F0 03 20 C4 DB 68 29 1F C9 1D
D0 02 A9 41 18 65 03 85 03 90 82 E6 04 4C 33 DC
68 85 05 68 85 04 68 85 03 68 85 02 68 85 01 68
85 00 68 A8 68 AA A5 D2 29 03 60
A2 20 A9 CC 20 09 E9 AD F9 FF F0 1B A8 AD F8 FF
A6 BC 8E 82 05 A2 01 8E E8 FF 20 24 E9 20 45 E9
A2 00 8E F0 FF A2 56 18 60 25 30 85 30 A5 CE 85
0B A5 31 38 E5 18 C5 CD B0 02 E6 0B A9 F8 25 31
85 31 60 A9 F0 20 5F DB 20 AF DB 90 03 4C A1 C4
A5 7F 29 0F 4C 9B C4 A9 F8 20 5F DB 20 AF DB 90
03 4C 91 C4 A5 7F 4A 4C 74 C4 B1 08 48 E6 08 D0
02 E6 09 68 60 A4 0A 18 60 84 0A A4 BC B9 FE DC
85 08 B9 0C DD 85 09 F0 EC A0 00 20 A0 DB 20 A0
DB 20 A0 DB 20 A0 DB C9 01 F0 DA C5 30 D0 EC 20
A0 DB C5 31 D0 E8 20 A0 DB C5 0B D0 E4 20 A0 DB
A4 0A 20 4D 8B 38 60 A0 00 B1 00 A8 E6 00 D0 02
E6 01 98 60 8A 48 98 48 A5 00 48 A5 01 48 A5 02
48 A5 03 48 A5 04 48 A5 05 48 A5 BC 0A A8 B9 D0
DA 85 00 38 A5 C0 E5 00 4A 4A 0A 85 00 C6 00 C6
00 AD C9 05 4A 4A 4A 4A 29 01 05 00 85 02 A9 00
85 03 85 04 A5 BC 0A 0A 85 00 A5 02 4A 4A 4A 4A
29 03 85 04 05 00 0A A8 B9 1A DD 85 00 B9 1B DD
85 01 05 00 F0 22 20 ED DB C9 FE F0 7C 48 29 E0
AA A5 03 4A 4A 4A 4A 85 05 A5 04 0A 0A 0A 0A 05
05 C5 02 90 47 F0 04 68 4C DF DC 8A F0 1A C9 E0
F0 42 24 6F 50 06 29 20 D0 37 F0 0C 10 06 29 40
D0 2F F0 04 29 80 D0 29 A5 02 48 0A 0A 0A 0A 85
02 38 A9 F0 E5 02 85 02 A5 03 29 0F 18 65 02 AA
68 85 02 20 ED DB 9D 00 06 4C CA DC 8A C9 E0 F0
03 20 ED DB 68 29 1F C9 1D D0 02 A9 41 18 65 03
85 03 90 82 E6 04 4C 5C DC 68 85 05 68 85 04 68
85 03 68 85 02 68 85 01 68 85 00 68 A8 68 AA A5
D2 29 03 60
""".strip().replace("\n"," ")+"")),

(0x7630, bytearray.fromhex("20 D1 DB EA")),
(0x7630, bytearray.fromhex("20 FA DB EA")),

]
23 changes: 12 additions & 11 deletions src/mappermages.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,35 +17,35 @@

# $daec:
# lda #0
# sta $fff8 ; has to be a value #0
# sta $fff0 ; has to be a value #0
# jmp $9557 ; jump to old entry point
(0xdafc, bytearray.fromhex("a9 00 8d f8 ff 4c 57 95")),
(0xdafc, bytearray.fromhex("a9 00 8d f0 ff 4c 57 95")),

# $daf4:
# lda #1
# sta $ffe8
# ldy #0
# lda ($c0),y
# sty $fff8
# sty $fff0
# rts
(0xdb04, bytearray.fromhex("a9 01 8d e8 ff a0 00 b1 c0 8c f8 ff 60")),
(0xdb04, bytearray.fromhex("a9 01 8d e8 ff a0 00 b1 c0 8c f0 ff 60")),

# $db01:
# lda #1
# sta $ffe8
# ldy #0
# lda ($84),y
# sty $fff8
# sty $fff0
# rts
(0xdb11, bytearray.fromhex("a9 01 8d e8 ff a0 00 b1 84 8c f8 ff 60")),
(0xdb11, bytearray.fromhex("a9 01 8d e8 ff a0 00 b1 84 8c f0 ff 60")),

# $db0e:
# lda #1
# sta $ffe8
# jsr $cab7
# sty $fff8
# sty $fff0
# rts
(0xdb1e, bytearray.fromhex("a9 01 8d e8 ff 20 b7 ca 8c f8 ff 60")),
(0xdb1e, bytearray.fromhex("a9 01 8d e8 ff 20 b7 ca 8c f0 ff 60")),

# $db1a:
# ldy #4
Expand All @@ -62,9 +62,9 @@
# sty $ffe8
# dey
# lda ($ca),y
# sty $fff8
# sty $fff0
# rts
(0xdb34, bytearray.fromhex("a0 01 8c e8 ff 88 b1 ca 8c f8 ff 60 ")),
(0xdb34, bytearray.fromhex("a0 01 8c e8 ff 88 b1 ca 8c f0 ff 60 ")),

# $db30:
# sta $5d3
Expand Down Expand Up @@ -131,7 +131,8 @@

diacritics_table_range = [0xE650, 0xE650 + 5]
# we could get as far as 0xE6C3, but we need some space for the diacritics hack.
unitile_table_range = [0xDCD1, diacritics_table_range[0]]
unitile_table_range = [0xDCFE, diacritics_table_range[0]]
extended_text_ptr = 0xfff8

"""
# add PRG banks 1-2, pushing the old bank 1 to bank 3
Expand Down
Loading

0 comments on commit ffbaac7

Please sign in to comment.