Skip to content

Commit a118779

Browse files
committed
Updated engine for custom zone sprites and tiles, reverted example
1 parent b69625a commit a118779

File tree

13 files changed

+57
-4861
lines changed

13 files changed

+57
-4861
lines changed

engine/globals.asm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ VRAM_TILEMAP = $09600 ; 64x32 (40x30 visible)
106106
VRAM_TILES = $0A800 ; 704 4bpp 8x8 tiles
107107
VRAM_SPRITES = $10000 ; 499 4bpp 16x16 frames
108108

109+
VRAM_TILES_UPPER = VRAM_TILES + (256*32)
110+
VRAM_SPRITES_UPPER = VRAM_SPRITES + (256*128)
111+
109112
LEVEL_BITMAP_OFFSET = 8*320/2
110113
VRAM_LEVEL_BITMAP = VRAM_BITMAP + LEVEL_BITMAP_OFFSET
111114
LEVEL_BITMAP_SIZE = 200*320/2

engine/zone.asm

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@ ZONE_INC = 1
77
.include "state.asm"
88
.include "bin2dec.asm"
99
.include "level.asm"
10+
.include "mouse.asm"
1011

11-
__zone_filename: .asciiz "000L0_00.BIN"
12+
__zone_filename: .asciiz "000L0B00.BIN"
13+
__zone_tiles_fn: .asciiz "000TILES.BIN"
14+
__zone_sprites_fn: .asciiz "000SPRTS.BIN"
1215
__zone_bank: .byte 0
13-
ZONE_FN_LENGTH = __zone_bank - __zone_filename - 1
16+
ZONE_FN_LENGTH = __zone_tiles_fn - __zone_filename - 1
1417

1518
__zone_num_string: .byte 0,0,0
1619

@@ -73,12 +76,53 @@ load_zone:
7376
ldx #DISK_DEVICE
7477
ldy #0
7578
jsr SETLFS ; SetFileParams(LogNum=1,DevNum=DISK_DEVICE,SA=0)
76-
lda #<(__zone_filename) ; overwrite zone number in filename
79+
lda #<(__zone_filename) ; overwrite zone number in filenames
7780
sta ZP_PTR_2
7881
lda #>(__zone_filename)
7982
sta ZP_PTR_2+1
8083
lda zone
8184
jsr byte2ascii
85+
lda #<(__zone_tiles_fn)
86+
sta ZP_PTR_2
87+
lda #>(__zone_tiles_fn)
88+
sta ZP_PTR_2+1
89+
lda zone
90+
jsr byte2ascii
91+
lda #<(__zone_sprites_fn)
92+
sta ZP_PTR_2
93+
lda #>(__zone_sprites_fn)
94+
sta ZP_PTR_2+1
95+
lda zone
96+
jsr byte2ascii
97+
; load custom tiles
98+
lda #ZONE_FN_LENGTH
99+
ldx #<__zone_tiles_fn
100+
ldy #>__zone_tiles_fn
101+
jsr SETNAM ; SetFileName(__zone_tiles_fn)
102+
lda __zone_bank
103+
sta RAM_BANK
104+
jsr reset_bank
105+
lda #^VRAM_TILES_UPPER
106+
clc
107+
adc #2
108+
ldx #<VRAM_TILES_UPPER
109+
ldy #>VRAM_TILES_UPPER
110+
jsr LOAD ; LoadFile(Verify=VRAM_TILES_UPPER.bank+2,Address=VRAM_TILES_UPPER.addr)
111+
; load custom sprites
112+
lda #ZONE_FN_LENGTH
113+
ldx #<__zone_sprites_fn
114+
ldy #>__zone_sprites_fn
115+
jsr SETNAM ; SetFileName(__zone_sprites_fn)
116+
lda __zone_bank
117+
sta RAM_BANK
118+
jsr reset_bank
119+
lda #^VRAM_SPRITES_UPPER
120+
clc
121+
adc #2
122+
ldx #<VRAM_SPRITES_UPPER
123+
ldy #>VRAM_SPRITES_UPPER
124+
jsr LOAD ; LoadFile(Verify=VRAM_SPRITES_UPPER.bank+2,Address=VRAM_SPRITES_UPPER.addr)
125+
jsr init_mouse
82126
ldx #0
83127
@level_loop:
84128
lda #<__zone_num_string ; overwrite level number in filename

example/mygame.xci

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ tiles_hex mygame_tiles.hex
66
sprites_hex mygame_sprites.hex
77
menu_xci mygame_menu.xci
88
title_screen mygame_start.xci
9-
init_cursor 256 # sprite frame index
9+
init_cursor 0 # sprite frame index
1010
zone mygame_zone0.xci # the first zone defined will be loaded first,
1111
# with its first level the start of the game
1212
zone mygame_zone1.xci

example/mygame_menu.xci

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Menu bar definition
22
menu_bg 1 # background color = white
33
menu_fg 0 # foreground color = black
4-
menu_lc 256
4+
menu_lc 2H
55
menu_sp 1
66
menu_rc 2
77
menu_div 4

0 commit comments

Comments
 (0)