From c272bd33fe54adb5bb6b76aad4d940450aac6592 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 30 Dec 2020 01:41:14 -0500 Subject: [PATCH] tfv: more work on the split --- tfv/Makefile | 44 +++---- tfv/gr_hlin.s | 124 +++++++++++++++++++ tfv/gr_putsprite.s | 101 +++++++++++++++ tfv/loader.s | 6 +- tfv/text_print.s | 4 +- tfv/tfv.s | 91 -------------- tfv/tfv_drawmap.s | 89 ++++++++++++++ tfv/tfv_flying.s | 57 +++++++-- tfv/tfv_game_over.s | 28 +++++ tfv/tfv_help.s | 36 ++++++ tfv/tfv_info.s | 157 ------------------------ tfv/{tfv_worldmap.s => tfv_overworld.s} | 8 +- tfv/tfv_world.s | 59 +++++++++ 13 files changed, 516 insertions(+), 288 deletions(-) create mode 100644 tfv/gr_hlin.s create mode 100644 tfv/gr_putsprite.s delete mode 100644 tfv/tfv.s create mode 100644 tfv/tfv_drawmap.s create mode 100644 tfv/tfv_game_over.s create mode 100644 tfv/tfv_help.s delete mode 100644 tfv/tfv_info.s rename tfv/{tfv_worldmap.s => tfv_overworld.s} (99%) create mode 100644 tfv/tfv_world.s diff --git a/tfv/Makefile b/tfv/Makefile index d8277c80..ebe41ca6 100644 --- a/tfv/Makefile +++ b/tfv/Makefile @@ -11,11 +11,12 @@ all: tfv.dsk $(DOS33): cd ../dos33fs-utils && make -tfv.dsk: $(DOS33) HELLO LOADER TFV_TITLE TFV +tfv.dsk: $(DOS33) HELLO LOADER TFV_TITLE TFV_FLYING TFV_WORLD $(DOS33) -y tfv.dsk SAVE A HELLO $(DOS33) -y tfv.dsk BSAVE -a 0x1000 LOADER $(DOS33) -y tfv.dsk BSAVE -a 0x2000 TFV_TITLE - $(DOS33) -y tfv.dsk BSAVE -a 0x2000 TFV + $(DOS33) -y tfv.dsk BSAVE -a 0x2000 TFV_FLYING + $(DOS33) -y tfv.dsk BSAVE -a 0x2000 TFV_WORLD ### @@ -43,25 +44,26 @@ tfv_title.o: tfv_title.s \ ### -TFV: tfv.o - ld65 -o TFV tfv.o -C ../linker_scripts/apple2_2000.inc +### -tfv.o: tfv.s \ - tfv_flying.s tfv_info.s \ - tfv_textentry.s tfv_worldmap.s \ - graphics_map/tfv_backgrounds.inc tfv_sprites.inc zp.inc \ - ../asm_routines/multiply_fast.s \ - gr_fast_clear.s \ - ../asm_routines/pageflip.s \ - ../asm_routines/gr_setpage.s \ - ../asm_routines/keypress.s \ - ../asm_routines/gr_putsprite.s \ - ../asm_routines/text_print.s \ - ../asm_routines/memset.s \ - ../asm_routines/gr_vlin.s \ - ../asm_routines/gr_copy.s \ - ../asm_routines/gr_unrle.s - ca65 -o tfv.o tfv.s -l tfv.lst +TFV_FLYING: tfv_flying.o + ld65 -o TFV_FLYING tfv_flying.o -C ../linker_scripts/apple2_2000.inc + +tfv_flying.o: tfv_flying.s \ + gr_hlin.s gr_putsprite.s \ + tfv_help.s \ + tfv_sprites.inc + ca65 -o tfv_flying.o tfv_flying.s -l tfv_flying.lst + +### + +TFV_WORLD: tfv_world.o + ld65 -o TFV_WORLD tfv_world.o -C ../linker_scripts/apple2_2000.inc + +tfv_world.o: tfv_world.s \ + tfv_overworld.s tfv_drawmap.s \ + graphics_map/tfv_backgrounds.inc tfv_sprites.inc zp.inc + ca65 -o tfv_world.o tfv_world.s -l tfv_world.lst graphics_map/tfv_backgrounds.inc: cd graphics_map && make @@ -71,5 +73,5 @@ graphics_map/tfv_backgrounds.inc: ### clean: - rm -f *~ TITLE.GR *.o *.lst TFV TFV_TITLE HELLO LOADER + rm -f *~ TITLE.GR *.o *.lst TFV TFV_TITLE TFV_FLYING TFV_WORLD HELLO LOADER diff --git a/tfv/gr_hlin.s b/tfv/gr_hlin.s new file mode 100644 index 00000000..29efa598 --- /dev/null +++ b/tfv/gr_hlin.s @@ -0,0 +1,124 @@ +;===================================================================== +;= ROUTINES +;===================================================================== + + ;================================ + ; hlin_setup + ;================================ + ; put address in GBASL/GBASH + ; Ycoord in A, Xcoord in Y +hlin_setup: + sty TEMPY ; 3 + tay ; y=A ; 2 + lda gr_offsets,Y ; lookup low-res memory address ; 4 + clc ; 2 + adc TEMPY ; 3 + sta GBASL ; 3 + iny ; 2 + + lda gr_offsets,Y ; 4 + adc DRAW_PAGE ; add in draw page offset ; 3 + sta GBASH ; 3 + rts ; 6 + ;=========== + ; 35 + ;================================ + ; hlin_double: + ;================================ + ; HLIN Y, V2 AT A + ; Y, X, A trashed + ; start at Y, draw up to and including X +hlin_double: +;int hlin_double(int page, int x1, int x2, int at) { + + jsr hlin_setup ; 41 + + sec ; 2 + lda V2 ; 3 + sbc TEMPY ; 3 + + tax ; 2 + inx ; 2 + ;=========== + ; 53 + ; fallthrough + + ;================================= + ; hlin_double_continue: width + ;================================= + ; GBASL has correct offset for row/col + ; width in X + +hlin_double_continue: + + ldy #0 ; 2 + lda COLOR ; 3 +hlin_double_loop: + sta (GBASL),Y ; 6 + inc GBASL ; 5 + dex ; 2 + bne hlin_double_loop ; 2nt/3 + + rts ; 6 + ;============= + ; 53+5+X*16+5 + + ;================================ + ; hlin_single: + ;================================ + ; HLIN Y, V2 AT A + ; Y, X, A trashed +hlin_single: + + jsr hlin_setup + + sec + lda V2 + sbc TEMPY + + tax + + ; fallthrough + + ;================================= + ; hlin_single_continue: width + ;================================= + ; width in X + +hlin_single_continue: + +hlin_single_top: + lda COLOR + and #$f0 + sta COLOR + +hlin_single_top_loop: + ldy #0 + lda (GBASL),Y + and #$0f + ora COLOR + sta (GBASL),Y + inc GBASL + dex + bne hlin_single_top_loop + + rts + +hlin_single_bottom: + + lda COLOR + and #$0f + sta COLOR + +hlin_single_bottom_loop: + ldy #0 + lda (GBASL),Y + and #$f0 + sta (GBASL),Y + inc GBASL + dex + bne hlin_single_bottom_loop + + rts + + diff --git a/tfv/gr_putsprite.s b/tfv/gr_putsprite.s new file mode 100644 index 00000000..6aecf782 --- /dev/null +++ b/tfv/gr_putsprite.s @@ -0,0 +1,101 @@ + ;============================================= + ; put_sprite + ;============================================= + ; Sprite to display in INH,INL + ; Location is XPOS,YPOS + ; Note, only works if YPOS is multiple of two? + +put_sprite: + + ldy #0 ; byte 0 is xsize ; 2 + lda (INL),Y ; 5 + sta CH ; xsize is in CH ; 3 + iny ; 2 + + lda (INL),Y ; byte 1 is ysize ; 5 + sta CV ; ysize is in CV ; 3 + iny ; 2 + + lda YPOS ; make a copy of ypos ; 3 + sta TEMPY ; as we modify it ; 3 + ;=========== + ; 28 +put_sprite_loop: + sty TEMP ; save sprite pointer ; 3 + + ldy TEMPY ; 3 + lda gr_offsets,Y ; lookup low-res memory address ; 5 + clc ; 2 + adc XPOS ; add in xpos ; 3 + sta OUTL ; store out low byte of addy ; 3 + lda gr_offsets+1,Y ; look up high byte ; 5 + adc DRAW_PAGE ; ; 3 + sta OUTH ; and store it out ; 3 + ldy TEMP ; restore sprite pointer ; 3 + + ; OUTH:OUTL now points at right place + + ldx CH ; load xsize into x ; 3 + ;=========== + ; 36 +put_sprite_pixel: + lda (INL),Y ; get sprite colors ; 5 + iny ; increment sprite pointer ; 2 + + sty TEMP ; save sprite pointer ; 3 + ldy #$0 ; 2 + + ; check if completely transparent + ; if so, skip + + cmp #$0 ; if all zero, transparent ; 2 + beq put_sprite_done_draw ; don't draw it ; 2nt/3 + ; FIXME: use BIT? ;============== + ; 17 + + sta COLOR ; save color for later ; 3 + + ; check if top pixel transparent + + and #$f0 ; check if top nibble zero ; 2 + bne put_sprite_bottom ; if not skip ahead ; 2nt/3 + + lda #$f0 ; setup mask ; 2 + sta MASK ; 3 + bmi put_sprite_mask ; 2nt/3 + +put_sprite_bottom: + lda COLOR ; re-load color ; 3 + and #$0f ; check if bottom nibble zero ; 2 + bne put_sprite_all ; if not, skip ahead ; 2nt/3 + lda #$0f ; 2 + sta MASK ; setup mask ; 3 + +put_sprite_mask: + lda (OUTL),Y ; get color at output ; 5 + and MASK ; mask off unneeded part ; 3 + ora COLOR ; or the color in ; 3 + sta (OUTL),Y ; store it back ; 5 + + jmp put_sprite_done_draw ; we are done ; 3 + +put_sprite_all: + lda COLOR ; load color ; 3 + sta (OUTL),Y ; and write it out ; 5 + + +put_sprite_done_draw: + + ldy TEMP ; restore sprite pointer ; 3 + + inc OUTL ; increment output pointer ; 5 + dex ; decrement x counter ; 2 + bne put_sprite_pixel ; if not done, keep looping ; 2nt/3 + + inc TEMPY ; each line has two y vars ; 5 + inc TEMPY ; 5 + dec CV ; decemenet total y count ; 5 + bne put_sprite_loop ; loop if not done ; 2nt/3 + + rts ; return ; 6 + diff --git a/tfv/loader.s b/tfv/loader.s index 6904a6a7..9723b809 100644 --- a/tfv/loader.s +++ b/tfv/loader.s @@ -151,15 +151,15 @@ copy_filename_done: filenames: .word intro_filename .word flying_filename - .word duke2_filename + .word world_filename .word credits_filename intro_filename: .byte "TFV_TITLE",0 flying_filename: .byte "TFV_FLYING",0 -duke2_filename: - .byte "DUKE_LEVEL2",0 +world_filename: + .byte "TFV_WORLD",0 credits_filename: .byte "TFV_CREDITS",0 diff --git a/tfv/text_print.s b/tfv/text_print.s index dada5ca0..f5e867d5 100644 --- a/tfv/text_print.s +++ b/tfv/text_print.s @@ -120,7 +120,7 @@ move_and_print_list: rts -.if 0 + ;================================ ; move and print a list of lines ;================================ @@ -188,4 +188,4 @@ print_both_pages: rts -.endif + diff --git a/tfv/tfv.s b/tfv/tfv.s deleted file mode 100644 index 97beef2a..00000000 --- a/tfv/tfv.s +++ /dev/null @@ -1,91 +0,0 @@ -.include "zp.inc" -.include "hardware.inc" - - ;================================ - ; Clear screen and setup graphics - ;================================ - - jsr HOME - jsr set_gr_page0 - - lda #0 - sta DISP_PAGE ; Forgot to set initially - ; real hardware and AppleWin default - ; to different values - - - ;===================== - ; Flying - ;===================== - - jsr flying_start - - ;===================== - ; World Map - ;===================== - - jsr world_map - - ;===================== - ; Game Over - ;===================== - - jsr game_over - - ;===================== - ; All finished - ;===================== -exit: - - lda #$4 - sta BASH - lda #$0 - sta BASL ; restore to 0x400 (page 0) - ; copy to 0x400 (page 0) - - ; call home - jsr HOME - - - ; Return to BASIC? - rts - - -;=============================================== -; External modules -;=============================================== - -;.include "tfv_opener.s" -;.include "tfv_title.s" -.include "tfv_textentry.s" -.include "tfv_flying.s" -.include "tfv_worldmap.s" -.include "tfv_info.s" - -.include "gr_fast_clear.s" -.include "../asm_routines/gr_hlin.s" -.include "../asm_routines/pageflip.s" -.include "../asm_routines/gr_setpage.s" -.include "../asm_routines/keypress.s" -.include "../asm_routines/gr_putsprite.s" -.include "../asm_routines/text_print.s" -;.include "../asm_routines/memset.s" -.include "../asm_routines/gr_vlin.s" -.include "../asm_routines/gr_copy.s" -;.include "../asm_routines/gr_unrle.s" -.include "decompress_fast_v2.s" -.include "../asm_routines/gr_offsets.s" - -;=============================================== -; Variables -;=============================================== - -enter_name_string: - .asciiz "PLEASE ENTER A NAME:" - -name: - .byte $0,$0,$0,$0,$0,$0,$0,$0 - - -.include "tfv_sprites.inc" -.include "graphics_map/tfv_backgrounds.inc" diff --git a/tfv/tfv_drawmap.s b/tfv/tfv_drawmap.s new file mode 100644 index 00000000..ce3e1501 --- /dev/null +++ b/tfv/tfv_drawmap.s @@ -0,0 +1,89 @@ + ;========================== + ; draw world map + ;========================== + ; including position + +show_map: + + lda #<(map_lzsa) + sta getsrc_smc+1 + lda #>(map_lzsa) + sta getsrc_smc+2 + + lda DRAW_PAGE + clc + adc #$4 ; page to load at? + ; FIXME: really need to load at 0xc and + ; copy + + + jsr decompress_lzsa2_fast + + + ; basic_plot(8+((map_x&0x3)*6)+(tfv_x/6), + ; 8+(((map_x&0xc)>>2)*6)+(tfv_y/6)) + + ; horizontal + + lda MAP_X + and #3 + asl + sta TEMP + asl + clc + adc TEMP ; ( MAP_X & 3 ) * 6 + sta TEMP + + lda TFV_X + lsr + lsr + lsr ; TFV/8 + + adc TEMP + adc #8 + sta CH + + ; vertical + + lda MAP_X + and #$c + lsr + sta TEMP + asl + clc + adc TEMP ; ( MAP_X & C ) * 6 + sta TEMP + + lda TFV_Y + lsr + lsr + lsr ; TFV/8 + + adc TEMP + adc #8 + lsr ; divide by 2 as htab_vtab multiplies + sta CV + +; jsr htab_vtab + + lda CV + asl + tay + lda gr_offsets,Y + clc + adc CH + sta BASL + + lda gr_offsets+1,Y + sta BASH + + lda #$19 ; red/orange + ldy #0 + sta (BASL),Y + + + jsr page_flip + + jsr wait_until_keypressed + + rts diff --git a/tfv/tfv_flying.s b/tfv/tfv_flying.s index 96108807..86fa153a 100644 --- a/tfv/tfv_flying.s +++ b/tfv/tfv_flying.s @@ -1,3 +1,10 @@ +; Mode-7 Flying code + +.include "zp.inc" +.include "hardware.inc" +.include "common_defines.inc" + + ;=========== ; CONSTANTS ;=========== @@ -15,14 +22,18 @@ CONST_SCALE_F = $00 CONST_LOWRES_HALF_I = $ec ; -(LOWRES_W/2) CONST_LOWRES_HALF_F = $00 -flying_start: +flying: ;=================== ; Clear screen/pages ;=================== jsr clear_screens - jsr set_gr_page0 + bit PAGE0 + lda #0 + sta DISP_PAGE + lda #4 + sta DRAW_PAGE ; Initialize the 2kB of multiply lookup tables jsr init_multiply_tables @@ -66,7 +77,7 @@ flying_loop: flying_keyboard: - jsr get_key ; get keypress ; 6 + jsr get_keypress ; get keypress ; 6 lda LASTKEY ; 3 @@ -77,7 +88,7 @@ flying_keyboard: ;skipskip: cmp #('W') ; 2 - bne check_down ; 3/2nt + bne flying_check_down ; 3/2nt ;=========== ; UP PRESSED @@ -85,7 +96,7 @@ flying_keyboard: lda SHIPY cmp #17 - bcc check_down ; bgt, if shipy>16 + bcc flying_check_down ; bgt, if shipy>16 dec SHIPY dec SHIPY ; move ship up inc SPACEZ_I ; incement height @@ -93,9 +104,9 @@ flying_keyboard: lda #0 sta SPLASH_COUNT -check_down: +flying_check_down: cmp #('S') - bne check_left + bne flying_check_left ;============= ; DOWN PRESSED @@ -108,15 +119,15 @@ check_down: inc SHIPY ; move ship down dec SPACEZ_I ; decrement height jsr update_z_factor - bcc check_left + bcc flying_check_left splashy: lda #10 sta SPLASH_COUNT -check_left: +flying_check_left: cmp #('A') - bne check_right + bne flying_check_right ;============= ; LEFT PRESSED @@ -129,7 +140,7 @@ check_left: lda #$0 sta TURNING clv - bvc check_right + bvc flying_check_right turn_left: lda #253 ; -3 @@ -137,7 +148,7 @@ turn_left: dec ANGLE -check_right: +flying_check_right: cmp #('D') bne check_speedup @@ -1243,3 +1254,25 @@ horizontal_lookup: grass_string: .asciiz "NEED TO LAND ON GRASS!" + + +;=============================================== +; External modules +;=============================================== + +.include "gr_offsets.s" +.include "gr_hlin.s" +.include "gr_pageflip.s" +.include "gr_putsprite.s" +.include "gr_fast_clear.s" + +.include "keyboard.s" +.include "joystick.s" + +.include "wait_keypressed.s" +.include "text_print.s" + +.include "tfv_help.s" + + +.include "tfv_sprites.inc" diff --git a/tfv/tfv_game_over.s b/tfv/tfv_game_over.s new file mode 100644 index 00000000..64473275 --- /dev/null +++ b/tfv/tfv_game_over.s @@ -0,0 +1,28 @@ + +game_over: + lda #$a0 + jsr clear_top_a + + bit SET_TEXT + + lda #10 + sta CV + lda #15 + sta CH + + lda #>(game_over_man) + sta OUTH + lda #<(game_over_man) + sta OUTL + + jsr move_and_print + + jsr page_flip + + jsr wait_until_keypressed + + rts + +game_over_man: + .asciiz "GAME OVER" + diff --git a/tfv/tfv_help.s b/tfv/tfv_help.s new file mode 100644 index 00000000..0229d92f --- /dev/null +++ b/tfv/tfv_help.s @@ -0,0 +1,36 @@ + ;==================== + ; print help message + ;==================== + +print_help: + lda #$a0 + jsr clear_top_a + + bit SET_TEXT + + lda #>(help_message) + sta OUTH + lda #<(help_message) + sta OUTL + + jsr move_and_print_list + + jsr page_flip + + jsr wait_until_keypressed + + bit SET_GR ; set graphics + + rts + +help_message: + .byte 1,18,"HELP" + .byte 3,4,"ARROWS - MOVE" + .byte 3,5,"W/A/S/D - MOVE" + .byte 3,6,"Z/X - SPEED UP / SLOW DOWN" + .byte 3,7,"SPACE - STOP" + .byte 3,8,"RETURN - LAND / ENTER / ACTION" + .byte 3,9,"I - INVENTORY" + .byte 3,10,"M - MAP" + .byte 3,11,"ESC - QUIT" + .byte $ff diff --git a/tfv/tfv_info.s b/tfv/tfv_info.s deleted file mode 100644 index 005c0994..00000000 --- a/tfv/tfv_info.s +++ /dev/null @@ -1,157 +0,0 @@ - -game_over: - lda #$a0 - jsr clear_top_a - - bit SET_TEXT - - lda #10 - sta CV - lda #15 - sta CH - - lda #>(game_over_man) - sta OUTH - lda #<(game_over_man) - sta OUTL - - jsr move_and_print - - jsr page_flip - -hang_forever: - jmp hang_forever - - rts - -game_over_man: - .asciiz "GAME OVER" - -show_map: - - lda DRAW_PAGE - clc - adc #$4 ; page to load at? - ; FIXME: really need to load at 0xc and - ; copy - pha - - lda #<(map_lzsa) - sta getsrc_smc+1 - lda #>(map_lzsa) - sta getsrc_smc+2 - - pla - - jsr decompress_lzsa2_fast - - - ; basic_plot(8+((map_x&0x3)*6)+(tfv_x/6), - ; 8+(((map_x&0xc)>>2)*6)+(tfv_y/6)) - - ; horizontal - - lda MAP_X - and #3 - asl - sta TEMP - asl - clc - adc TEMP ; ( MAP_X & 3 ) * 6 - sta TEMP - - lda TFV_X - lsr - lsr - lsr ; TFV/8 - - adc TEMP - adc #8 - sta CH - - ; vertical - - lda MAP_X - and #$c - lsr - sta TEMP - asl - clc - adc TEMP ; ( MAP_X & C ) * 6 - sta TEMP - - lda TFV_Y - lsr - lsr - lsr ; TFV/8 - - adc TEMP - adc #8 - lsr ; divide by 2 as htab_vtab multiplies - sta CV - - jsr htab_vtab - lda #$19 ; red/orange - ldy #0 - sta (BASL),Y - - - jsr page_flip - - jsr wait_until_keypressed - - rts - - - -print_help: - lda #$a0 - jsr clear_top_a - - bit SET_TEXT - - lda #1 - sta CV - lda #18 - sta CH - - lda #>(help1) - sta OUTH - lda #<(help1) - sta OUTL - - jsr move_and_print - jsr point_to_end_string - - lda #3 - sta CV - lda #4 - sta CH - -help_loop: - jsr move_and_print - jsr point_to_end_string - inc CV - - lda #11 - cmp CV - bne help_loop - - jsr page_flip - - jsr wait_until_keypressed - - bit SET_GR ; set graphics - - rts - -help1: .asciiz "HELP" -help2: .asciiz "ARROWS - MOVE" -help3: .asciiz "W/A/S/D - MOVE" -help4: .asciiz "Z/X - SPEED UP / SLOW DOWN" -help5: .asciiz "SPACE - STOP" -help6: .asciiz "RETURN - LAND / ENTER / ACTION" -help7: .asciiz "I - INVENTORY" -help8: .asciiz "M - MAP" -help9: .asciiz "ESC - QUIT" - diff --git a/tfv/tfv_worldmap.s b/tfv/tfv_overworld.s similarity index 99% rename from tfv/tfv_worldmap.s rename to tfv/tfv_overworld.s index 38ec502e..d7fc18e7 100644 --- a/tfv/tfv_worldmap.s +++ b/tfv/tfv_overworld.s @@ -20,7 +20,11 @@ world_map: ;=================== jsr clear_screens - jsr set_gr_page0 + bit PAGE0 + lda #0 + sta DISP_PAGE + lda #4 + sta DRAW_PAGE ;=============== ; Init Variables @@ -58,7 +62,7 @@ worldmap_loop: worldmap_keyboard: - jsr get_key ; get keypress + jsr get_keypress ; get keypress lda LASTKEY diff --git a/tfv/tfv_world.s b/tfv/tfv_world.s new file mode 100644 index 00000000..b6f5d9d6 --- /dev/null +++ b/tfv/tfv_world.s @@ -0,0 +1,59 @@ + ; TFV world + ; the main part of the game + + +.include "zp.inc" +.include "hardware.inc" +.include "common_defines.inc" + + ;================================ + ; Clear screen and setup graphics + ;================================ + + ;===================== + ; World Map + ;===================== + + jsr world_map + + ;===================== + ; Game Over + ;===================== + ; return to title screen? + + jsr game_over + + lda #LOAD_TITLE + sta WHICH_LOAD + + rts + + +;=============================================== +; External modules +;=============================================== + +.include "tfv_drawmap.s" +.include "tfv_overworld.s" +.include "tfv_game_over.s" +.include "tfv_help.s" + + +.include "gr_fast_clear.s" +.include "gr_hlin.s" +.include "gr_pageflip.s" +.include "keyboard.s" +.include "joystick.s" +.include "gr_putsprite.s" +.include "text_print.s" +.include "gr_copy.s" +.include "decompress_fast_v2.s" +.include "gr_offsets.s" +.include "wait_keypressed.s" + +;=============================================== +; Variables +;=============================================== + +.include "tfv_sprites.inc" +.include "graphics_map/tfv_backgrounds.inc"