From eab34d8f0b66eb2b965fb7f00d6cf56836d1a454 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Wed, 11 Oct 2023 08:18:12 +0200 Subject: [PATCH] sprites --- project.mk | 2 - src/include/globals.asm | 70 +++++- src/include/hardwarectl.asm | 23 +- src/include/memcpy.asm | 10 + src/include/sprites.asm | 322 ++++++++++++++++++++++++++ src/include/{ => vendor}/hardware.inc | 0 src/include/{ => vendor}/structs.asm | 0 src/main.asm | 80 +++++-- src/res/tiles.gbr | Bin 10069 -> 10069 bytes src/res/tiles.inc | 24 +- tools/Emulicious.ini | 43 +++- tools/GBTD/gbtd.ini | 5 +- tools/GBTD/tiles.inc | 30 --- tools/GBTD/tiles.z80 | 284 ----------------------- 14 files changed, 521 insertions(+), 372 deletions(-) create mode 100644 src/include/sprites.asm rename src/include/{ => vendor}/hardware.inc (100%) rename src/include/{ => vendor}/structs.asm (100%) delete mode 100644 tools/GBTD/tiles.inc delete mode 100644 tools/GBTD/tiles.z80 diff --git a/project.mk b/project.mk index 9cda45a..ec58cf5 100644 --- a/project.mk +++ b/project.mk @@ -10,6 +10,4 @@ ROMNAME := out ROMEXT := gb ASFLAGS += -h LDFLAGS += -d -ASFLAGS += -v -LDFLAGS += -v LDFLAGS += -t diff --git a/src/include/globals.asm b/src/include/globals.asm index 24e4307..ae29add 100644 --- a/src/include/globals.asm +++ b/src/include/globals.asm @@ -3,8 +3,8 @@ ; * Libraries and Defines * ; * * ; ***************************************************************************** -INCLUDE "hardware.inc" -INCLUDE "structs.asm" +INCLUDE "vendor/hardware.inc" +INCLUDE "vendor/structs.asm" ; ***************************************************************************** ; * * @@ -14,12 +14,37 @@ INCLUDE "structs.asm" SECTION "General Game Variables", WRAM0 wLCDCCtr:: db wEvenFrame:: db -wField:: ds 200 +wField:: ds (10*22) wRNGSeed:: ds 4 -wFill:: db SECTION "Important Game Variables", HRAM -hUnused:: ds 126 +hScore:: ds 6 +hCLevel:: ds 6 +hNLevel:: ds 6 + + +; ***************************************************************************** +; * * +; * Static Data * +; * * +; ***************************************************************************** +SECTION "Static Data", ROM0 +sPieceXOffsets:: + db 0, 8, 16, 24 ; I + db 0, 8, 8, 16 ; Z + db 0, 8, 8, 16 ; S + db 0, 8, 16, 16 ; J + db 0, 0, 8, 16 ; L + db 8, 8, 16, 16 ; O + db 0, 8, 8, 16 ; T +sPieceYOffsets:: + db 0, 0, 0, 0 ; I + db 0, 0, 7, 7 ; Z + db 7, 7, 0, 0 ; S + db 0, 0, 0, 7 ; J + db 0, 7, 0, 0 ; L + db 0, 7, 0, 7 ; O + db 0, 0, 7, 0 ; T ; ***************************************************************************** @@ -41,6 +66,7 @@ DEF PALETTE_LIGHTER_0 EQU %11100100 DEF PALETTE_LIGHTER_1 EQU %10010000 DEF PALETTE_LIGHTER_2 EQU %01000000 DEF PALETTE_LIGHTER_3 EQU %00000000 +DEF FIELD_TOP_LEFT EQU $9800+(0*32)+1 DEF FIELD_ROW_1 EQU $9800+(0*32)+1 DEF FIELD_ROW_2 EQU $9800+(1*32)+1 DEF FIELD_ROW_3 EQU $9800+(2*32)+1 @@ -61,6 +87,17 @@ DEF FIELD_ROW_17 EQU $9800+(16*32)+1 DEF FIELD_ROW_18 EQU $9800+(17*32)+1 DEF FIELD_ROW_19 EQU $9800+(18*32)+1 DEF FIELD_ROW_20 EQU $9800+(19*32)+1 +DEF TILE_FIELD_EMPTY EQU 7 +DEF TILE_PIECE_0 EQU 10 +DEF TILE_0 EQU 110 +DEF NEXT_BASE_X EQU 120 +DEF NEXT_BASE_Y EQU 40 +DEF HOLD_BASE_X EQU 120 +DEF HOLD_BASE_Y EQU 80 +DEF DIGIT_BASE_X EQU 112 +DEF SCORE_BASE_Y EQU 115 +DEF CLEVEL_BASE_Y EQU 136 +DEF NLEVEL_BASE_Y EQU 148 ; ***************************************************************************** @@ -94,6 +131,29 @@ MACRO wait_vblank_end jr z, .waitvbe\@ ENDM +; Sets the background palette to A. +MACRO set_bg_palette + ldh [rBGP], a +ENDM + +; Sets the object0 palette to A. +MACRO set_obj0_palette + ldh [rOBP0], a +ENDM + +; Sets the object1 palette to A. +MACRO set_obj1_palette + ldh [rOBP1], a +ENDM + +; Sets all palettes to A. +MACRO set_all_palettes + set_bg_palette a + set_obj0_palette a + set_obj1_palette a +ENDM + + ; Writes two bytes to a register pair. MACRO lb ld \1, (LOW(\2) << 8) | LOW(\3) diff --git a/src/include/hardwarectl.asm b/src/include/hardwarectl.asm index 60936e3..0dcb227 100644 --- a/src/include/hardwarectl.asm +++ b/src/include/hardwarectl.asm @@ -1,15 +1,18 @@ SECTION "Hardware Control Functions", ROM0 -SetBGPalette:: - ldh [rBGP], a - ret - - DisableAudio:: xor a, a ldh [rNR52], a ret +DisableLCDKeepingSettings:: + ldh a, [rLCDC] + and LOW(~LCDCF_ON) + wait_vram + ldh [rLCDC], a + ret + + DisableLCD:: wait_vram xor a, a @@ -18,6 +21,14 @@ DisableLCD:: EnableLCD:: - ld a, LCDCF_ON | LCDCF_BGON + ldh a, [rLCDC] + or LCDCF_ON | LCDCF_BGON | LCDCF_OBJON + ldh [rLCDC], a + ret + + +SetTileDataBanks:: + ldh a, [rLCDC] + or LCDCF_BLK01 ldh [rLCDC], a ret diff --git a/src/include/memcpy.asm b/src/include/memcpy.asm index 9daa304..5633628 100644 --- a/src/include/memcpy.asm +++ b/src/include/memcpy.asm @@ -22,3 +22,13 @@ SafeMemCopy:: or a, c jp nz, SafeMemCopy ret + +; Sets memory from hl to hl+bc to d +UnsafeMemSet:: + ld [hl], d + inc hl + dec bc + ld a, b + or a, c + jp nz, UnsafeMemSet + ret diff --git a/src/include/sprites.asm b/src/include/sprites.asm new file mode 100644 index 0000000..02d5ea6 --- /dev/null +++ b/src/include/sprites.asm @@ -0,0 +1,322 @@ +SECTION "Shadow OAM", WRAM0, ALIGN[8] +UNION +wShadowOAM:: ds 160 +NEXTU +wSPRNext1:: ds 4 +wSPRNext2:: ds 4 +wSPRNext3:: ds 4 +wSPRNext4:: ds 4 +wSPRHold1:: ds 4 +wSPRHold2:: ds 4 +wSPRHold3:: ds 4 +wSPRHold4:: ds 4 +wSPRScore1:: ds 4 +wSPRScore2:: ds 4 +wSPRScore3:: ds 4 +wSPRScore4:: ds 4 +wSPRScore5:: ds 4 +wSPRScore6:: ds 4 +wSPRCLevel1:: ds 4 +wSPRCLevel2:: ds 4 +wSPRCLevel3:: ds 4 +wSPRCLevel4:: ds 4 +wSPRCLevel5:: ds 4 +wSPRCLevel6:: ds 4 +wSPRNLevel1:: ds 4 +wSPRNLevel2:: ds 4 +wSPRNLevel3:: ds 4 +wSPRNLevel4:: ds 4 +wSPRNLevel5:: ds 4 +wSPRNLevel6:: ds 4 +wSPRUnused:: ds (14 * 4) +ENDU + + +SECTION "OAM DMA Code", ROM0 +OAMDMA:: + LOAD "OAM DMA", HRAM + hOAMDMA:: + ld a, HIGH(wShadowOAM) + ldh [rDMA], a + ld a, 40 +: dec a + jr nz, :- + ret + ENDL +OAMDMAEnd:: + + + +SECTION "OAM Functions", ROM0 +CopyOAMHandler:: + ld de, OAMDMA + ld hl, hOAMDMA + ld bc, OAMDMAEnd - OAMDMA + call UnsafeMemCopy + ret + + +ClearOAM:: + ld hl, _OAMRAM + ld bc, $9F + ld d, 0 + call UnsafeMemSet + ld hl, wShadowOAM + ld bc, $9F + ld d, 0 + call UnsafeMemSet + ret + + + +SECTION "Domain Specific Functions", ROM0 +; Index of next piece in A. +ApplyNext:: + ; Correct tile + add a, TILE_PIECE_0 + ld [wSPRNext1+2], a + ld [wSPRNext2+2], a + ld [wSPRNext3+2], a + ld [wSPRNext4+2], a + sub a, TILE_PIECE_0 + + ; X positions + ld hl, sPieceXOffsets + ld de, sPieceYOffsets + cp 0 + jp z, .skipoffn +.getoffn + inc hl + inc de + dec a + jp nz, .getoffn +.skipoffn + ld a, [hl+] + add a, NEXT_BASE_X + ld [wSPRNext1+1], a + ld a, [hl+] + add a, NEXT_BASE_X + ld [wSPRNext2+1], a + ld a, [hl+] + add a, NEXT_BASE_X + ld [wSPRNext3+1], a + ld a, [hl] + add a, NEXT_BASE_X + ld [wSPRNext4+1], a + + ; Y positions + ld h, d + ld l, e + ld a, [hl+] + add a, NEXT_BASE_Y + ld [wSPRNext1+0], a + ld a, [hl+] + add a, NEXT_BASE_Y + ld [wSPRNext2+0], a + ld a, [hl+] + add a, NEXT_BASE_Y + ld [wSPRNext3+0], a + ld a, [hl] + add a, NEXT_BASE_Y + ld [wSPRNext4+0], a + ret + +; Index of hold piece in A. +ApplyHold:: + cp 255 + jp nz, .doApplyHold + ld hl, wSPRHold1 + ld bc, 16 + ld d, 0 + call UnsafeMemSet + ret + +.doApplyHold + ; Correct tile + add a, TILE_PIECE_0 + ld [wSPRHold1+2], a + ld [wSPRHold2+2], a + ld [wSPRHold3+2], a + ld [wSPRHold4+2], a + sub a, TILE_PIECE_0 + + ; X positions + ld hl, sPieceXOffsets + ld de, sPieceYOffsets + cp 0 + jp z, .skipoffh +.getoffh + inc hl + inc de + dec a + jp nz, .getoffh +.skipoffh + ld a, [hl+] + add a, HOLD_BASE_X + ld [wSPRHold1+1], a + ld a, [hl+] + add a, HOLD_BASE_X + ld [wSPRHold2+1], a + ld a, [hl+] + add a, HOLD_BASE_X + ld [wSPRHold3+1], a + ld a, [hl] + add a, HOLD_BASE_X + ld [wSPRHold4+1], a + + ; Y positions + ld h, d + ld l, e + ld a, [hl+] + add a, HOLD_BASE_Y + ld [wSPRHold1+0], a + ld a, [hl+] + add a, HOLD_BASE_Y + ld [wSPRHold2+0], a + ld a, [hl+] + add a, HOLD_BASE_Y + ld [wSPRHold3+0], a + ld a, [hl] + add a, HOLD_BASE_Y + ld [wSPRHold4+0], a + ret + + +; Address of first sprite in hl. +; Address of first digit in de. +ApplyNumbers:: + inc hl + inc hl + ld bc, 4 + + ld a, [de] + add a, TILE_0 + ld [hl], a + add hl, bc + inc de + + ld a, [de] + add a, TILE_0 + ld [hl], a + add hl, bc + inc de + + ld a, [de] + add a, TILE_0 + ld [hl], a + add hl, bc + inc de + + ld a, [de] + add a, TILE_0 + ld [hl], a + add hl, bc + inc de + + ld a, [de] + add a, TILE_0 + ld [hl], a + add hl, bc + inc de + + ld a, [de] + add a, TILE_0 + ld [hl], a + add hl, bc + inc de + ret + + +SetNumberSpritePositions:: + ld a, DIGIT_BASE_X + ld hl, wSPRScore1 + ld [hl], SCORE_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRScore2 + ld [hl], SCORE_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRScore3 + ld [hl], SCORE_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRScore4 + ld [hl], SCORE_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRScore5 + ld [hl], SCORE_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRScore6 + ld [hl], SCORE_BASE_Y + inc hl + ld [hl], a + ld a, DIGIT_BASE_X + ld hl, wSPRCLevel1 + ld [hl], CLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRCLevel2 + ld [hl], CLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRCLevel3 + ld [hl], CLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRCLevel4 + ld [hl], CLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRCLevel5 + ld [hl], CLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRCLevel6 + ld [hl], CLEVEL_BASE_Y + inc hl + ld [hl], a + ld a, DIGIT_BASE_X + ld hl, wSPRNLevel1 + ld [hl], NLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRNLevel2 + ld [hl], NLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRNLevel3 + ld [hl], NLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRNLevel4 + ld [hl], NLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRNLevel5 + ld [hl], NLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ld hl, wSPRNLevel6 + ld [hl], NLEVEL_BASE_Y + inc hl + ld [hl], a + add a, 8 + ret diff --git a/src/include/hardware.inc b/src/include/vendor/hardware.inc similarity index 100% rename from src/include/hardware.inc rename to src/include/vendor/hardware.inc diff --git a/src/include/structs.asm b/src/include/vendor/structs.asm similarity index 100% rename from src/include/structs.asm rename to src/include/vendor/structs.asm diff --git a/src/main.asm b/src/main.asm index c62c87d..5f26df5 100644 --- a/src/main.asm +++ b/src/main.asm @@ -2,6 +2,7 @@ INCLUDE "globals.asm" INCLUDE "memcpy.asm" INCLUDE "hardwarectl.asm" INCLUDE "interrupts.asm" +INCLUDE "sprites.asm" INCLUDE "res/tiles.inc" INCLUDE "res/gameplay_map.inc" @@ -9,27 +10,47 @@ SECTION "Code Entry Point", ROM0 MainEntryPoint:: ; Turn off LCD during initialization. call DisableLCD + + ; Save some power and turn off the audio. call DisableAudio ; We use a single set of tiles for the entire game, so we copy it at the start. ld de, Tiles - ld hl, $9000 + ld hl, _VRAM ld bc, TilesEnd - Tiles call UnsafeMemCopy + ; Also to the second bank of tile data. + ld de, Tiles + ld hl, _VRAM + $800 + ld bc, TilesEnd - Tiles + call UnsafeMemCopy + + ; Make sure both sprites and bg use the same tile data. + call SetTileDataBanks + ; The tilemap is just for testing for now. ld de, GameplayTilemap ld hl, $9800 ld bc, GameplayTilemapEnd - GameplayTilemap call UnsafeMemCopy - ld a, PALETTE_REGULAR - call SetBGPalette + ; Clear OAM. + call ClearOAM + call CopyOAMHandler + call SetNumberSpritePositions + ; Set up the palettes. + ld a, PALETTE_REGULAR + set_all_palettes + + ; Zero out the ram where needed. call InitializeVariables + + ; Set up the interrupt handlers. call InitializeLCDCInterrupt - ; And turn it back on before we start. + ; And turn the LCD back on before we start. call EnableLCD ; Make sure the first game loop starts just like all the future ones. @@ -41,27 +62,30 @@ GameLoop:: call GetInput call HandleTimers - ld bc, 20*10 - ld hl, wField -: ld a, [wFill] - ld [hl+], a - dec bc - ld a, b - or a, c - jp nz, :- - - ld a, [wFill] - inc a - ld [wFill], a - ; Handle gameplay here ; TODO + ld a, 0 + call ApplyNext + ld a, 4 + call ApplyHold + ld hl, wSPRScore1 + ld de, hScore + call ApplyNumbers + + ld hl, wSPRCLevel1 + ld de, hCLevel + call ApplyNumbers + + ld hl, wSPRNLevel1 + ld de, hNLevel + call ApplyNumbers GameLoopEnd: wait_vblank + call hOAMDMA call BlitField jp GameLoop @@ -76,15 +100,23 @@ SECTION "Functions", ROM0 InitializeVariables: xor a, a ld [wLCDCCtr], a + ld hl, wField + ld bc, 10*22 + ld d, TILE_FIELD_EMPTY + call UnsafeMemSet + ld hl, hScore + ld bc, (6*3) + ld d, 0 + call UnsafeMemSet ret BlitField: - ; The first 16 rows can be blitted without checking for vram access. - ld de, wField + ; The first 14 rows can be blitted without checking for vram access. + ld de, wField + (2*10) DEF row = 0 - REPT 16 - ld hl, FIELD_ROW_1+(32*row) + REPT 14 + ld hl, FIELD_TOP_LEFT+(32*row) REPT 10 ld a, [de] ld [hl+], a @@ -93,9 +125,9 @@ BlitField: DEF row += 1 ENDR - ; The last 4 rows need some care. - REPT 4 - ld hl, FIELD_ROW_1+(32*row) + ; The last 6 rows need some care. + REPT 6 + ld hl, FIELD_TOP_LEFT+(32*row) REPT 2 : ldh a, [rSTAT] and STATF_LCD diff --git a/src/res/tiles.gbr b/src/res/tiles.gbr index f4680951de4f5c510ad0f179bfe5e62625b21ffd..0ce76d2b621e458d32175aad372679292bca54ba 100644 GIT binary patch delta 414 zcmccWchzsh7P)#RCT1XD0s_)#1}I7hCIv7DN*?dr83L5~-mkT@q delta 34 qcmccWchzsh7P-yQs=pW~7O?R$GcYj-GcYhPGB7eSZ$79ng$)4C%n4Tj diff --git a/src/res/tiles.inc b/src/res/tiles.inc index 16cdecd..c34f3a9 100644 --- a/src/res/tiles.inc +++ b/src/res/tiles.inc @@ -240,18 +240,18 @@ Tiles:: DB $00,$C6,$00,$C6,$00,$7C,$00,$00 DB $00,$7C,$00,$C6,$00,$C6,$00,$7E DB $00,$06,$00,$C6,$00,$7C,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 - DB $00,$00,$00,$00,$00,$00,$00,$00 + DB $3C,$FF,$3C,$FF,$3C,$FF,$3C,$FF + DB $3C,$FF,$3C,$FF,$3C,$FF,$00,$00 + DB $99,$7E,$99,$7E,$99,$7E,$99,$7E + DB $99,$7E,$99,$7E,$99,$7E,$00,$00 + DB $C3,$3C,$C3,$3C,$C3,$3C,$C3,$3C + DB $C3,$3C,$C3,$3C,$C3,$3C,$00,$00 + DB $66,$18,$66,$18,$66,$18,$66,$18 + DB $66,$18,$66,$18,$66,$18,$00,$00 + DB $3C,$00,$3C,$00,$3C,$00,$3C,$00 + DB $3C,$00,$3C,$00,$3C,$00,$00,$00 + DB $18,$00,$18,$00,$18,$00,$18,$00 + DB $18,$00,$18,$00,$18,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 DB $00,$00,$00,$00,$00,$00,$00,$00 diff --git a/tools/Emulicious.ini b/tools/Emulicious.ini index d742909..5ab5e3f 100644 --- a/tools/Emulicious.ini +++ b/tools/Emulicious.ini @@ -1,5 +1,5 @@ #Emulicious settings file -#Tue Oct 10 08:21:37 CEST 2023 +#Wed Oct 11 08:17:53 CEST 2023 SouthPanelHeight=635 GameBoyErrorBreakpointMessage6= GameBoyErrorBreakpointMessage5= @@ -18,7 +18,11 @@ Key19=72 GameBoyErrorBreakpointMessage0= Key18=71 Key17=76 +WindowMemoryTracerWindowY=631 +WindowPaletteViewerY=619 Key16=74 +WindowMemoryTracerWindowX=383 +WindowPaletteViewerX=262 GameBoyErrorBreakpointEnabled9=false DebuggerEventFiltersGameBoy= Key15=75 @@ -42,6 +46,7 @@ GameBoyErrorBreakpointEnabled3=false Gamepad0Key5=-1 GameBoyErrorBreakpointEnabled2=false Gamepad0Key4=-1 +WindowVideoViewerOpen=true GameBoyErrorBreakpointEnabled1=false Gamepad0Key3=-1 GameBoyErrorBreakpointEnabled0=false @@ -49,14 +54,17 @@ Gamepad0Key2=-1 Gamepad0Key1=-1 AudioSync=false Gamepad0Key0=-1 -WindowTilemapViewerOpen=true +WindowTilemapViewerOpen=false SMSInputDeviceB=1 SMSInputDeviceA=1 DataExecutionBreakpointEnabled=false GameBoyErrorBreakpointCondition32= WindowEventViewerWindowY=489 WindowEventViewerWindowX=1472 -DebuggerWestPanelSelectedTab=0 +WindowSpriteViewerHeight=527 +WindowSpriteViewerWidth=370 +DebuggerWestPanelSelectedTab=1 +WindowMemoryTracerWindowHeight=289 Gamepad0Key37=-1 Gamepad0Key36=-1 SMSbuttonsGamepad=-1 @@ -88,11 +96,15 @@ Gamepad0Key22=-1 Gamepad0Key21=-1 Gamepad0Key20=-1 UninitializedMemoryBreakpointEnabled=false +RegistersGameBoy=AF,BC,DE,HL,SP,PC,LCDC,STAT,LY,DIV,IE,IF +WindowMemoryTracerWindowOpen=false Gamepad0Key19=-1 WindowDebuggerHeight=987 Gamepad0Key18=-1 Gamepad0Key17=-1 +WindowSpriteViewerY=512 Gamepad0Key16=-1 +WindowSpriteViewerX=320 Gamepad0Key15=-1 Gamepad0Key14=-1 Gamepad0Key13=-1 @@ -104,6 +116,9 @@ DataExecutionBreakpointSuspend=true SMSbuttonsKeyboard=false GBGamepad=-1 WindowEventViewerWindowOpen=true +WindowPaletteViewerHeight=313 +WindowMemoryTracerWindowWidth=243 +WindowVideoViewerWidth=980 StretchToWindow=false Gamepad1Key37=-1 Gamepad1Key36=-1 @@ -115,6 +130,7 @@ Gamepad1Key32=-1 Gamepad1Key31=-1 Gamepad1Key30=-1 InterruptBreakpointCondition= +WindowPaletteViewerOpen=false SMSGamepadAThreshold=50 Gamepad1Key29=-1 Gamepad1Key28=-1 @@ -132,9 +148,11 @@ Gamepad1Key21=-1 Gamepad1Key20=-1 StackSplitLocation=320 FontSize=13 +CombineVideoViewers=true WindowEmuliciousHeight=781 CodeFontSize=13 WindowTilemapViewerY=544 +MemoryTracer=true GBGamepadKeyboard=false UninitializedMemoryBreakpointSuspend=true WindowTilemapViewerX=1013 @@ -145,6 +163,7 @@ Gamepad1Key19=-1 Gamepad1Key18=-1 BankSwapAtPCBreakpointEnabled=false Gamepad1Key17=-1 +WindowPaletteViewerWidth=485 Gamepad1Key16=-1 Gamepad1Key15=-1 Recent0=C\:\\workspace\\dmgtris\\bin\\out.gb @@ -173,7 +192,9 @@ GameBoyErrorBreakpointMessage32= BankSwapAtPCBreakpointCondition= WindowTilemapViewerWidth=404 SMSbuttonsThreshold=50 +WindowTileViewerY=549 Gamepad1Key9=-1 +WindowTileViewerX=271 Gamepad1Key8=-1 UninitializedMemoryBreakpointCondition= Gamepad1Key7=-1 @@ -184,7 +205,9 @@ Gamepad1Key5=-1 GameBoyErrorBreakpointSuspend17=true Gamepad1Key4=-1 GameBoyErrorBreakpointSuspend16=true +WindowVideoViewerY=275 Gamepad1Key3=-1 +WindowVideoViewerX=946 Gamepad1Key2=-1 Gamepad1Key1=-1 Gamepad1Key0=-1 @@ -192,6 +215,8 @@ GameBoyErrorBreakpointSuspend10=true WindowTilemapViewerHeight=744 WindowEventViewerWindowDivider=309 GameBoyErrorBreakpointMessage20= +MemoryTracerDisplayFileOffsetsForROM=true +WindowTileViewerWidth=467 WindowDebuggerY=158 WindowDebuggerX=939 Key37=-1 @@ -199,6 +224,7 @@ Key36=-1 Key35=-1 GameBoyErrorBreakpointCondition9= GameBoyErrorBreakpointEnabled32=false +WindowTileViewerOpen=false Key34=-1 GameBoyErrorBreakpointCondition8= Key33=-1 @@ -211,7 +237,7 @@ DebuggerMemoryTabVisibleRect=0,0,0,0 Key31=-1 GameBoyErrorBreakpointCondition5= GameBoyErrorBreakpointMessage17= -OutlineWidth=324 +OutlineWidth=425 WindowEventViewerWindowWidth=930 Key30=-1 GameBoyErrorBreakpointCondition4= @@ -231,22 +257,25 @@ Key3=10 Key2=192 Key1=75 Key0=74 +WindowVideoViewerHeight=1027 Update=2 Key29=-1 Key28=10 Key27=-1 +WindowSpriteViewerOpen=false Key26=-1 Key25=-1 Key24=-1 +WindowTileViewerHeight=453 Key23=10 GameBoyErrorBreakpointEnabled20=false Key22=-1 Key21=-1 Key20=-1 BankSwapAtPCBreakpointSuspend=true -WindowEmuliciousY=385 -WindowEmuliciousX=97 -DebuggerMemorySelectedTab=RAM +WindowEmuliciousY=376 +WindowEmuliciousX=146 +DebuggerMemorySelectedTab=HRAM WindowDebuggerWidth=1110 GameBoyErrorBreakpointMessage9= GameBoyErrorBreakpointMessage8= diff --git a/tools/GBTD/gbtd.ini b/tools/GBTD/gbtd.ini index 46310fb..4a3d899 100644 --- a/tools/GBTD/gbtd.ini +++ b/tools/GBTD/gbtd.ini @@ -1,4 +1,5 @@ [General] -GBRPath=c:\workspace\dmgtris\ +GBRPath=c:\workspace\dmgtris\src\res\ [Recently used files] -F0=c:\workspace\dmgtris\tiles.gbr +F0=c:\workspace\dmgtris\src\res\tiles.gbr +F1=c:\workspace\dmgtris\tiles.gbr diff --git a/tools/GBTD/tiles.inc b/tools/GBTD/tiles.inc deleted file mode 100644 index 08c0b9d..0000000 --- a/tools/GBTD/tiles.inc +++ /dev/null @@ -1,30 +0,0 @@ -; TILES.INC -; -; Include File. -; -; Info: -; Section : Tiles -; Bank : 0 -; Form : All tiles as one unit. -; Format : Gameboy 4 color. -; Compression : None. -; Counter : None. -; Tile size : 8 x 8 -; Tiles : 0 to 127 -; -; Palette colors : None. -; SGB Palette : None. -; CGB Palette : None. -; -; Convert to metatiles : No. -; -; This file was generated by GBTD v2.2 - - -; Bank of tiles. -TileLabelBank EQU 0 - -; Start of tile array. - GLOBAL TileLabel - -; End of TILES.INC diff --git a/tools/GBTD/tiles.z80 b/tools/GBTD/tiles.z80 deleted file mode 100644 index 4703686..0000000 --- a/tools/GBTD/tiles.z80 +++ /dev/null @@ -1,284 +0,0 @@ -; TILES.Z80 -; -; Tile Source File. -; -; Info: -; Section : Tiles -; Bank : 0 -; Form : All tiles as one unit. -; Format : Gameboy 4 color. -; Compression : None. -; Counter : None. -; Tile size : 8 x 8 -; Tiles : 0 to 127 -; -; Palette colors : None. -; SGB Palette : None. -; CGB Palette : None. -; -; Convert to metatiles : No. -; -; This file was generated by GBTD v2.2 - - SECTION "Tiles", ROM0 - -; Start of tile array. -TileLabel:: -DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $67,$1F,$67,$1F,$67,$1F,$67,$1F -DB $67,$1F,$67,$1F,$67,$1F,$00,$00 -DB $E6,$F8,$E6,$F8,$E6,$F8,$E6,$F8 -DB $E6,$F8,$E6,$F8,$E6,$F8,$00,$00 -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$FF -DB $00,$FF,$FF,$00,$FF,$00,$00,$00 -DB $67,$1F,$67,$1F,$67,$1F,$60,$1F -DB $60,$1F,$7F,$00,$7F,$00,$00,$00 -DB $E6,$F8,$E6,$F8,$E6,$F8,$06,$F8 -DB $06,$F8,$FE,$00,$FE,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$01,$00,$00,$00 -DB $00,$00,$00,$00,$00,$FF,$FF,$FF -DB $00,$FF,$00,$00,$00,$00,$00,$00 -DB $80,$80,$E0,$E0,$F8,$F8,$FE,$FE -DB $F8,$F8,$E0,$E0,$80,$80,$00,$00 -DB $00,$FF,$7E,$99,$66,$BD,$66,$BD -DB $66,$BD,$7E,$99,$00,$FF,$00,$00 -DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5 -DB $36,$C9,$6C,$93,$00,$FF,$00,$00 -DB $00,$FF,$00,$BD,$3C,$81,$00,$81 -DB $3C,$81,$00,$BD,$00,$FF,$00,$00 -DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81 -DB $5A,$A5,$3C,$C3,$00,$FF,$00,$00 -DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD -DB $42,$BD,$5A,$A5,$00,$FF,$00,$00 -DB $00,$FF,$7E,$81,$7E,$81,$7E,$81 -DB $7E,$81,$7E,$81,$00,$FF,$00,$00 -DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB -DB $2A,$D5,$54,$AB,$00,$FF,$00,$00 -DB $FF,$FF,$FF,$99,$E7,$BD,$E7,$BD -DB $E7,$BD,$FF,$99,$FF,$FF,$00,$00 -DB $FF,$FF,$B7,$C9,$ED,$93,$DB,$A5 -DB $B7,$C9,$ED,$93,$FF,$FF,$00,$00 -DB $FF,$FF,$81,$BD,$BD,$81,$81,$81 -DB $BD,$81,$81,$BD,$FF,$FF,$00,$00 -DB $FF,$FF,$BD,$C3,$DB,$A5,$FF,$81 -DB $DB,$A5,$BD,$C3,$FF,$FF,$00,$00 -DB $FF,$FF,$DB,$A5,$C3,$BD,$C3,$BD -DB $C3,$BD,$DB,$A5,$FF,$FF,$00,$00 -DB $FF,$FF,$FF,$81,$FF,$81,$FF,$81 -DB $FF,$81,$FF,$81,$FF,$FF,$00,$00 -DB $FF,$FF,$D5,$AB,$AB,$D5,$D5,$AB -DB $AB,$D5,$D5,$AB,$FF,$FF,$00,$00 -DB $00,$FF,$7E,$99,$66,$BD,$66,$BD -DB $66,$BD,$FE,$BB,$FF,$FF,$00,$00 -DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5 -DB $36,$C9,$EE,$BB,$FF,$FF,$00,$00 -DB $00,$FF,$00,$BD,$3C,$81,$00,$81 -DB $3C,$81,$AA,$BF,$FF,$FF,$00,$00 -DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81 -DB $5A,$A5,$BE,$EB,$FF,$FF,$00,$00 -DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD -DB $42,$BD,$FA,$AF,$FF,$FF,$00,$00 -DB $00,$FF,$7E,$81,$7E,$81,$7E,$81 -DB $7E,$81,$FE,$AB,$FF,$FF,$00,$00 -DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB -DB $2A,$D5,$FE,$AB,$FF,$FF,$00,$00 -DB $00,$FF,$7E,$99,$66,$BD,$66,$BD -DB $EE,$BF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5 -DB $BE,$EB,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$00,$BD,$3C,$81,$00,$81 -DB $BE,$AB,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81 -DB $FA,$AF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD -DB $EA,$BF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$7E,$81,$7E,$81,$7E,$81 -DB $FE,$AB,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB -DB $AA,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$7E,$99,$66,$BD,$EE,$BF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$36,$C9,$6C,$93,$FA,$AF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$00,$BD,$3C,$81,$AA,$AB -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$3C,$C3,$5A,$A5,$FE,$AB -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$5A,$A5,$42,$BD,$EA,$BF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$7E,$81,$7E,$81,$FE,$AB -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$54,$AB,$2A,$D5,$FE,$AB -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$7E,$99,$EE,$BF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$36,$C9,$EE,$BB,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$00,$BD,$BE,$AB,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$3C,$C3,$FA,$AF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$5A,$A5,$EA,$BF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$7E,$81,$FE,$AB,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$54,$AB,$AA,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$FE,$BB,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$BE,$EB,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$AA,$BF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$BE,$EB,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$FA,$AF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$FE,$AB,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$FF,$FE,$AB,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF -DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 -DB $00,$00,$00,$00,$FF,$FF,$FF,$00 -DB $FF,$FF,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$F0,$F0,$F8,$08 -DB $FC,$E4,$1C,$14,$1C,$14,$00,$00 -DB $00,$00,$00,$00,$07,$07,$0F,$08 -DB $1F,$13,$1C,$14,$1C,$14,$00,$00 -DB $1C,$14,$1C,$14,$FC,$E4,$F8,$08 -DB $F0,$F0,$00,$00,$00,$00,$00,$00 -DB $1C,$14,$1C,$14,$1F,$13,$0F,$08 -DB $07,$07,$00,$00,$00,$00,$00,$00 -DB $1C,$14,$1C,$14,$FC,$E4,$F8,$08 -DB $FC,$E4,$1C,$14,$1C,$14,$00,$00 -DB $1C,$14,$1C,$14,$1F,$13,$0F,$08 -DB $1F,$13,$1C,$14,$1C,$14,$00,$00 -DB $1C,$14,$1C,$14,$1C,$14,$1C,$14 -DB $1C,$14,$1C,$14,$1C,$14,$00,$00 -DB $38,$38,$6C,$6C,$C6,$C6,$FE,$FE -DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00 -DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC -DB $C6,$C6,$C6,$C6,$FC,$FC,$00,$00 -DB $7C,$7C,$C6,$C6,$C0,$C0,$C0,$C0 -DB $C0,$C0,$C6,$C6,$7C,$7C,$00,$00 -DB $FC,$FC,$C6,$C6,$C6,$C6,$C6,$C6 -DB $C6,$C6,$C6,$C6,$FC,$FC,$00,$00 -DB $FE,$FE,$C0,$C0,$C0,$C0,$F8,$F8 -DB $C0,$C0,$C0,$C0,$FE,$FE,$00,$00 -DB $FE,$FE,$C0,$C0,$C0,$C0,$F8,$F8 -DB $C0,$C0,$C0,$C0,$C0,$C0,$00,$00 -DB $7C,$7C,$C6,$C6,$C0,$C0,$CE,$CE -DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00 -DB $C6,$C6,$C6,$C6,$C6,$C6,$FE,$FE -DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00 -DB $60,$60,$60,$60,$60,$60,$60,$60 -DB $60,$60,$60,$60,$60,$60,$00,$00 -DB $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C -DB $CC,$CC,$CC,$CC,$78,$78,$00,$00 -DB $C6,$C6,$C6,$C6,$CC,$CC,$F8,$F8 -DB $CC,$CC,$C6,$C6,$C6,$C6,$00,$00 -DB $60,$60,$60,$60,$60,$60,$60,$60 -DB $60,$60,$60,$60,$7C,$7C,$00,$00 -DB $C6,$C6,$EE,$EE,$FE,$FE,$D6,$D6 -DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00 -DB $C6,$C6,$E6,$E6,$F6,$F6,$DE,$DE -DB $CE,$CE,$C6,$C6,$C6,$C6,$00,$00 -DB $7C,$7C,$C6,$C6,$C6,$C6,$C6,$C6 -DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00 -DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC -DB $C0,$C0,$C0,$C0,$C0,$C0,$00,$00 -DB $7C,$7C,$C6,$C6,$C6,$C6,$C6,$C6 -DB $D6,$D6,$DE,$DE,$7C,$7C,$00,$00 -DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC -DB $F8,$F8,$DC,$DC,$CE,$CE,$00,$00 -DB $7E,$7E,$C0,$C0,$C0,$C0,$7C,$7C -DB $06,$06,$06,$06,$FC,$FC,$00,$00 -DB $FC,$FC,$30,$30,$30,$30,$30,$30 -DB $30,$30,$30,$30,$30,$30,$00,$00 -DB $C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6 -DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00 -DB $C6,$C6,$C6,$C6,$6C,$6C,$6C,$6C -DB $6C,$6C,$38,$38,$38,$38,$00,$00 -DB $C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6 -DB $D6,$D6,$D6,$D6,$6C,$6C,$00,$00 -DB $C6,$C6,$C6,$C6,$6C,$6C,$38,$38 -DB $6C,$6C,$C6,$C6,$C6,$C6,$00,$00 -DB $C6,$C6,$EE,$EE,$7C,$7C,$38,$38 -DB $70,$70,$E0,$E0,$C0,$C0,$00,$00 -DB $FE,$FE,$0C,$0C,$18,$18,$30,$30 -DB $60,$60,$C0,$C0,$FE,$FE,$00,$00 -DB $7C,$7C,$CE,$CE,$D6,$D6,$D6,$D6 -DB $D6,$D6,$E6,$E6,$7C,$7C,$00,$00 -DB $38,$38,$78,$78,$D8,$D8,$18,$18 -DB $18,$18,$18,$18,$18,$18,$00,$00 -DB $7C,$7C,$C6,$C6,$C6,$C6,$0C,$0C -DB $38,$38,$E0,$E0,$FE,$FE,$00,$00 -DB $7C,$7C,$C6,$C6,$06,$06,$0C,$0C -DB $06,$06,$C6,$C6,$7C,$7C,$00,$00 -DB $1C,$1C,$3C,$3C,$6C,$6C,$CC,$CC -DB $FE,$FE,$0C,$0C,$0C,$0C,$00,$00 -DB $FE,$FE,$C0,$C0,$C0,$C0,$FC,$FC -DB $06,$06,$06,$06,$FC,$FC,$00,$00 -DB $7C,$7C,$C6,$C6,$C0,$C0,$FC,$FC -DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00 -DB $FE,$FE,$0C,$0C,$18,$18,$18,$18 -DB $30,$30,$30,$30,$30,$30,$00,$00 -DB $7C,$7C,$C6,$C6,$C6,$C6,$7C,$7C -DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00 -DB $7C,$7C,$C6,$C6,$C6,$C6,$7E,$7E -DB $06,$06,$C6,$C6,$7C,$7C,$00,$00 -DB $00,$7C,$00,$CE,$00,$D6,$00,$D6 -DB $00,$D6,$00,$E6,$00,$7C,$00,$00 -DB $00,$38,$00,$78,$00,$D8,$00,$18 -DB $00,$18,$00,$18,$00,$18,$00,$00 -DB $00,$7C,$00,$C6,$00,$C6,$00,$0C -DB $00,$38,$00,$E0,$00,$FE,$00,$00 -DB $00,$7C,$00,$C6,$00,$06,$00,$0C -DB $00,$06,$00,$C6,$00,$7C,$00,$00 -DB $00,$1C,$00,$3C,$00,$6C,$00,$CC -DB $00,$FE,$00,$0C,$00,$0C,$00,$00 -DB $00,$FE,$00,$C0,$00,$C0,$00,$FC -DB $00,$06,$00,$06,$00,$FC,$00,$00 -DB $00,$7C,$00,$C6,$00,$C0,$00,$FC -DB $00,$C6,$00,$C6,$00,$7C,$00,$00 -DB $00,$FE,$00,$0C,$00,$18,$00,$18 -DB $00,$30,$00,$30,$00,$30,$00,$00 -DB $00,$7C,$00,$C6,$00,$C6,$00,$7C -DB $00,$C6,$00,$C6,$00,$7C,$00,$00 -DB $00,$7C,$00,$C6,$00,$C6,$00,$7E -DB $00,$06,$00,$C6,$00,$7C,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 -DB $00,$00,$00,$00,$00,$00,$00,$00 - -; End of TILES.Z80