diff --git a/ReC98.inc b/ReC98.inc index f0465782..d13642f3 100644 --- a/ReC98.inc +++ b/ReC98.inc @@ -71,3 +71,8 @@ PLAYFIELD_VRAM_X = PLAYFIELD_X / 8 PLAYFIELD_VRAM_W = PLAYFIELD_W / 8 ROW_SIZE = (RES_X / 8) + +TILE_W = 16 +TILE_H = 16 +TILES_Y = 1 + (PLAYFIELD_H / TILE_H) + 1 +TILES_X = (PLAYFIELD_W / TILE_W) diff --git a/th02/tiles[bss].asm b/th02/tiles[bss].asm new file mode 100644 index 00000000..1d35b501 --- /dev/null +++ b/th02/tiles[bss].asm @@ -0,0 +1,4 @@ +TILE_COUNT = TILES_X * TILES_Y + +public _tile_ring +_tile_ring db TILE_COUNT dup(?) diff --git a/th02_main.asm b/th02_main.asm index 4ce9c337..5b564612 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -1244,7 +1244,7 @@ loc_44BF: mov al, map[bx] mov [si+4DF6h], al mov bx, [bp+var_2] - mov [bx+si+4E0Fh], al + mov _tile_ring[bx+si], al inc si inc cx @@ -1410,12 +1410,12 @@ loc_45CB: mov al, map[bx+si] mov bx, 17h sub bx, di - imul bx, 18h - mov [bx+si+4E0Fh], al + imul bx, TILES_X + mov _tile_ring[bx+si], al inc si loc_45ED: - cmp si, 18h + cmp si, TILES_X jl short loc_45CB inc di @@ -1569,8 +1569,8 @@ loc_46C6: loc_46D9: push [bp+var_2] mov bx, si - imul bx, 18h - mov al, [bx+di+4E0Fh] + imul bx, TILES_X + mov al, _tile_ring[bx+di] mov ah, 0 push ax call sub_4419 @@ -1706,8 +1706,8 @@ loc_47B2: loc_47B9: mov bx, [bp+var_2] - imul bx, 18h - mov al, [bx+si+4E0Fh] + imul bx, TILES_X + mov al, _tile_ring[bx+si] mov ah, 0 mov [bp+var_4], ax push di @@ -1717,7 +1717,7 @@ loc_47B9: add di, 2 loc_47D1: - cmp si, 18h + cmp si, TILES_X jl short loc_47B9 inc [bp+var_2] add [bp+var_6], 500h @@ -1757,7 +1757,7 @@ sub_480C proc far var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 -arg_0 = word ptr 6 +@@tile = word ptr 6 arg_2 = word ptr 8 arg_4 = word ptr 0Ah @@ -1779,10 +1779,10 @@ arg_4 = word ptr 0Ah mov word_22862, 0 mov word_22864, 10h mov bx, [bp+var_2] - imul bx, 18h + imul bx, TILES_X add bx, [bp+var_4] - mov al, byte ptr [bp+arg_0] - mov [bx+4E0Fh], al + mov al, byte ptr [bp+@@tile] + mov _tile_ring[bx], al call sub_43B0 mov dx, 0A6h ; '¦' mov al, byte_20619 @@ -1799,13 +1799,13 @@ arg_4 = word ptr 0Ah add ax, dx mov [bp+var_6], ax push ax - push [bp+arg_0] + push [bp+@@tile] call sub_43E0 mov dx, 0A6h ; '¦' mov al, byte_20618 out dx, al push [bp+var_6] - push [bp+arg_0] + push [bp+@@tile] call sub_43E0 nopcall egc_off pop di @@ -38522,156 +38522,7 @@ word_22864 dw ? dd ? ; dd ? ; byte_2287E db ? - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; +include th02/tiles[bss].asm dd ? ; dd ? ; dd ? ; diff --git a/th04/formats/tiles[bss].asm b/th04/tiles[bss].asm similarity index 55% rename from th04/formats/tiles[bss].asm rename to th04/tiles[bss].asm index b8ff47ca..5686a6c0 100644 --- a/th04/formats/tiles[bss].asm +++ b/th04/tiles[bss].asm @@ -1,5 +1,14 @@ ; Each tile defines a 384×80 section of the background, which internally are ; further divided into 5 rows of 16 pixels each. + +; No idea why ZUN just didn't go with the actually visible space of 384 +; horizontal tiles. That's 8 wasted tiles per row that the game doesn't do +; anything with? +TILES_MEMORY_X = 512 / TILE_W + +public _tile_ring +_tile_ring dw (TILES_MEMORY_X * TILES_Y) dup(?) + if GAME eq 5 public _tile_index_ptr _tile_index_ptr dw ? diff --git a/th04_main.asm b/th04_main.asm index a6540487..b12461ed 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -1418,7 +1418,7 @@ arg_4 = word ptr 0Ah pop bx add bx, ax mov ax, [bp+arg_0] - mov [bx+4D40h], ax + mov _tile_ring[bx], ax mov al, [bp+var_1] mov byte_255BC, al pop di @@ -1537,7 +1537,7 @@ loc_B896: loc_B89D: shl ax, 6 - add ax, 4D40h + add ax, offset _tile_ring mov di, ax xor ax, ax mov al, _tile_row @@ -1555,7 +1555,7 @@ loc_B89D: push ds mov ax, map_seg mov ds, ax - mov cx, 18h + mov cx, TILES_X rep movsw pop ds @@ -1822,8 +1822,8 @@ sub_BAA2 proc near push si push ds xor bx, bx - mov di, 4D40h - add di, 600h + mov di, offset _tile_ring + add di, TILES_MEMORY_X * (TILES_Y - 1) * 2 xor dx, dx mov ax, ds mov es, ax @@ -1843,10 +1843,10 @@ loc_BAC0: mov ah, 5 loc_BAD4: - mov cx, 0Ch + mov cx, TILES_X / 2 rep movsd - sub di, 70h ; 'p' - sub si, 70h ; 'p' + sub di, (TILES_MEMORY_X + TILES_X) * 2 + sub si, (TILES_MEMORY_X + TILES_X) * 2 dec ah jnz short loc_BAD4 inc bx @@ -1883,7 +1883,7 @@ sub_BAEE proc near shr ax, 4 shl ax, 6 mov bx, ax - mov si, [bx+4D40h] + mov si, _tile_ring[bx] mov bx, dx and bx, 0Fh mov cx, bx @@ -1909,7 +1909,7 @@ loc_BB49: xor dh, dh loc_BB4B: - mov dl, 18h + mov dl, TILES_X mov word_25109, cx loc_BB51: @@ -1921,8 +1921,8 @@ loc_BB51: loc_BB60: mov bp, es:[si] mov es:[di], bp - add si, 50h ; 'P' - add di, 50h ; 'P' + add si, ROW_SIZE + add di, ROW_SIZE loop loc_BB60 or bl, bl jz short loc_BB8F @@ -1935,7 +1935,7 @@ loc_BB60: sub bx, 640h loc_BB87: - mov si, [bx+4D40h] + mov si, _tile_ring[bx] xor bx, bx jmp short loc_BB60 ; --------------------------------------------------------------------------- @@ -1944,7 +1944,7 @@ loc_BB8F: mov cx, word_25109 add ax, 2 mov bx, ax - mov si, [bx+4D40h] + mov si, _tile_ring[bx] dec dl jnz short loc_BB51 pop di @@ -1966,17 +1966,17 @@ sub_BBA4 proc near mov bx, 4D20h mov di, 7A84h mov dh, 32h ; '2' - mov si, 600h + mov si, TILES_MEMORY_X * (TILES_Y - 1) * 2 loc_BBB9: - mov dl, 18h + mov dl, TILES_X loc_BBBB: cmp byte ptr [bx], 0 jz short loc_BBE7 push si mov byte ptr [bx], 0 - mov si, [si+4D40h] + mov si, _tile_ring[si] test dh, 1 jnz short loc_BBD1 add si, 280h @@ -4195,13 +4195,13 @@ sub_CBB8 proc near push di call sub_CBFA mov di, 7804h - mov bx, 5340h + mov bx, offset _tile_ring[TILES_MEMORY_X * (TILES_Y - 1) * 2] mov ax, GRAM_400 mov es, ax assume es:nothing loc_CBC8: - mov dl, 18h + mov dl, TILES_X loc_CBCA: mov si, [bx] @@ -4211,14 +4211,14 @@ loc_CBCA: loc_CBD0: mov ax, es:[si] mov es:[di], ax - add si, 50h ; 'P' - add di, 50h ; 'P' + add si, ROW_SIZE + add di, ROW_SIZE loop loc_CBD0 sub di, 4FEh add bx, 2 dec dl jnz short loc_CBCA - sub bx, 70h ; 'p' + sub bx, (TILES_MEMORY_X + TILES_X) * 2 sub di, 530h jge short loc_CBC8 call egc_off @@ -8246,9 +8246,9 @@ loc_EAB0: mov ax, [bx] loc_EABB: - mov [di+4D40h], ax - add di, 40h - cmp di, 640h + mov _tile_ring[di], ax + add di, (TILES_MEMORY_X * 2) + cmp di, (TILES_MEMORY_X * 2) * TILES_Y jb short loc_EABB mov di, dx @@ -8295,7 +8295,7 @@ var_2 = word ptr -2 loc_EB0F: mov bx, word_22D9C - imul bx, 18h + imul bx, TILES_X cmp byte ptr [bx+di+199Ch], 2 jnz short loc_EB41 mov al, byte_25668 ; jump table for switch statement @@ -8311,13 +8311,13 @@ loc_EB0F: mov dx, di add dx, dx add bx, dx - mov [bx+4D40h], ax + mov _tile_ring[bx], ax loc_EB41: inc di loc_EB42: - cmp di, 18h + cmp di, TILES_X jl short loc_EB0F cmp frame, 1 ja short loc_EB8A @@ -8339,11 +8339,11 @@ loc_EB59: mov si, di add si, si mov ax, [si+190Ch] - mov [bx+4D40h], ax + mov _tile_ring[bx], ax inc di loc_EB72: - cmp di, 18h + cmp di, TILES_X jl short loc_EB59 inc [bp+var_2] @@ -46185,407 +46185,7 @@ map_seg dw ? dd ? ; dd ? ; dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; -include th04/formats/tiles[bss].asm +include th04/tiles[bss].asm dword_266C6 dd ? frame dw ? include th03/frame_mod[bss].asm diff --git a/th05_main.asm b/th05_main.asm index 16456a6b..8060842f 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -1798,8 +1798,8 @@ sub_BB9A proc near push ds mov bx, _tile_index_ptr sub bx, 4 - mov di, 4FB6h - add di, 600h + mov di, offset _tile_ring + add di, TILES_MEMORY_X * (TILES_Y - 1) * 2 xor dx, dx mov ax, ds mov es, ax @@ -1819,10 +1819,10 @@ loc_BBBD: mov ah, 5 loc_BBCF: - mov cx, 0Ch + mov cx, TILES_X / 2 rep movsd - sub di, 70h ; 'p' - sub si, 70h ; 'p' + sub di, (TILES_MEMORY_X + TILES_X) * 2 + sub si, (TILES_MEMORY_X + TILES_X) * 2 dec ah jnz short loc_BBCF inc bx @@ -1843,13 +1843,13 @@ sub_BBE8 proc near push di call sub_BC2A mov di, 7804h - mov bx, 55B6h + mov bx, offset _tile_ring[TILES_MEMORY_X * (TILES_Y - 1) * 2] mov ax, GRAM_400 mov es, ax assume es:nothing loc_BBF8: - mov dl, 18h + mov dl, TILES_X loc_BBFA: mov si, [bx] @@ -1866,7 +1866,7 @@ loc_BC00: add bx, 2 dec dl jnz short loc_BBFA - sub bx, 70h ; 'p' + sub bx, (TILES_MEMORY_X + TILES_X) * 2 sub di, 530h jge short loc_BBF8 call egc_off @@ -1919,7 +1919,7 @@ sub_BC6A proc near shr ax, 4 shl ax, 6 mov bx, ax - mov si, [bx+4FB6h] + mov si, _tile_ring[bx] mov bx, dx and bx, 0Fh mov cx, bx @@ -1945,7 +1945,7 @@ loc_BCC5: xor dh, dh loc_BCC7: - mov dl, 18h + mov dl, TILES_X mov word_23F01, cx loc_BCCD: @@ -1971,7 +1971,7 @@ loc_BCDC: sub bx, 640h loc_BD03: - mov si, [bx+4FB6h] + mov si, _tile_ring[bx] xor bx, bx jmp short loc_BCDC ; --------------------------------------------------------------------------- @@ -1980,7 +1980,7 @@ loc_BD0B: mov cx, word_23F01 add ax, 2 mov bx, ax - mov si, [bx+4FB6h] + mov si, _tile_ring[bx] dec dl jnz short loc_BCCD pop di @@ -2037,7 +2037,7 @@ loc_BD81: loc_BD88: shl ax, 6 - add ax, 4FB6h + add ax, offset _tile_ring mov di, ax xor ax, ax mov al, _tile_row @@ -2054,7 +2054,7 @@ loc_BD88: push ds mov ax, map_seg mov ds, ax - mov cx, 18h + mov cx, TILES_X rep movsw pop ds @@ -2206,17 +2206,17 @@ sub_BF46 proc near mov bx, 4F96h mov di, 7A84h mov dh, 32h ; '2' - mov si, 600h + mov si, TILES_MEMORY_X * (TILES_Y - 1) * 2 loc_BF5B: - mov dl, 18h + mov dl, TILES_X loc_BF5D: cmp byte ptr [bx], 0 jz short loc_BF89 push si mov byte ptr [bx], 0 - mov si, [si+4FB6h] + mov si, _tile_ring[si] test dh, 1 jnz short loc_BF73 add si, 280h @@ -2991,7 +2991,7 @@ numerals_draw endp pop bx add bx, ax mov ax, [bp+6] - mov [bx+4FB6h], ax + mov _tile_ring[bx], ax mov al, [bp-1] mov byte_2CE00, al pop di @@ -12735,13 +12735,13 @@ loc_11441: mov ax, di add ax, ax add bx, ax - mov word ptr [bx+4FB6h], 5048h + mov _tile_ring[bx], 5048h mov bx, [bp+var_2] shl bx, 6 mov ax, [bp+var_4] add ax, ax add bx, ax - mov word ptr [bx+4FB6h], 5048h + mov _tile_ring[bx], 5048h inc [bp+var_2] loc_11469: @@ -12773,7 +12773,7 @@ loc_11491: mov ax, di add ax, ax add bx, ax - mov word ptr [bx+4FB6h], 48h ; 'H' + mov _tile_ring[bx], 48h inc [bp+var_2] loc_114A6: @@ -44347,407 +44347,7 @@ map_seg dw ? dd ? ; dd ? ; dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; - dd ? ; -include th04/formats/tiles[bss].asm +include th04/tiles[bss].asm dword_25FDC dd ? frame dw ? include th03/frame_mod[bss].asm