games: update README/Makefiles

This commit is contained in:
Vince Weaver 2021-01-05 21:03:44 -05:00
parent de702a1fdd
commit 8c445868b5
46 changed files with 5289 additions and 144 deletions

22
games/Makefile Normal file
View File

@ -0,0 +1,22 @@
all:
cd duke && make
cd glados3.3 && make
cd ksp && make
cd mist && make
cd monkey && make
cd ootw && make
cd space_bars && make
cd tb_6502 && make
cd tfv && make
clean:
cd duke && make clean
cd glados3.3 && make clean
cd ksp && make clean
cd mist && make clean
cd monkey && make clean
cd ootw && make clean
cd space_bars && make clean
cd tb_6502 && make clean
cd tfv && make clean
rm -f *~

28
games/README Normal file
View File

@ -0,0 +1,28 @@
Various Games/Demakes by VMW Productions
+ duke
proof of concept demake of Duke Nukem1
+ glados3.3
Applesoft BASIC demo of "Portal"
+ ksp
Applesoft BASIC demo of Kerbal Space Program
+ mist
Full demak of Myst, fitting on 3 disks
+ monkey
proof of concept demake of Secret of Monkey Island
+ ootw
partial demake of Out of this World / Another World
+ space_bars
vapor-lock/cycle counted proof of concept game
+ tb_6502
Tom Bombem for Apple II, scrolling space shooter
+ tfv
Talbot Fantasy 7 RPG game

View File

@ -1,10 +1,12 @@
include ../Makefile.inc
include ../../Makefile.inc
DOS33 = ../dos33fs-utils/dos33
DOS33_RAW = ../dos33fs-utils/dos33_raw
B2D = ../bmp2dhr/b2d
PNG2GR = ../gr-utils/png2gr
DOS33 = ../../utils/dos33fs-utils/dos33
DOS33_RAW = ../../utils/dos33fs-utils/dos33_raw
B2D = ../../utils/bmp2dhr/b2d
PNG2GR = ../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
all: duke.dsk
@ -20,12 +22,12 @@ duke.dsk: HELLO LOADER DUKE_TITLE DUKE_LEVEL1 DUKE_LEVEL2
###
HELLO: hello.bas
../asoft_basic-utils/tokenize_asoft < hello.bas > HELLO
$(TOKENIZE) < hello.bas > HELLO
####
LOADER: loader.o
ld65 -o LOADER loader.o -C ../linker_scripts/apple2_1000.inc
ld65 -o LOADER loader.o -C ../../linker_scripts/apple2_1000.inc
loader.o: loader.s
ca65 -o loader.o loader.s -l loader.lst
@ -33,7 +35,7 @@ loader.o: loader.s
####
DUKE_TITLE: duke_title.o
ld65 -o DUKE_TITLE duke_title.o -C ../linker_scripts/apple2_4000.inc
ld65 -o DUKE_TITLE duke_title.o -C ../../linker_scripts/apple2_4000.inc
duke_title.o: duke_title.s zp.inc hardware.inc init_vars.s
ca65 -o duke_title.o duke_title.s -l duke_title.lst
@ -41,7 +43,7 @@ duke_title.o: duke_title.s zp.inc hardware.inc init_vars.s
####
DUKE_LEVEL1: duke_level1.o
ld65 -o DUKE_LEVEL1 duke_level1.o -C ../linker_scripts/apple2_2000.inc
ld65 -o DUKE_LEVEL1 duke_level1.o -C ../../linker_scripts/apple2_2000.inc
duke_level1.o: duke_level1.s zp.inc hardware.inc \
print_help.s gr_fast_clear.s quit_yn.s text_drawbox.s level_end.s \
@ -57,7 +59,7 @@ duke_level1.o: duke_level1.s zp.inc hardware.inc \
####
DUKE_LEVEL2: duke_level2.o
ld65 -o DUKE_LEVEL2 duke_level2.o -C ../linker_scripts/apple2_2000.inc
ld65 -o DUKE_LEVEL2 duke_level2.o -C ../../linker_scripts/apple2_2000.inc
duke_level2.o: duke_level2.s zp.inc hardware.inc \
print_help.s gr_fast_clear.s quit_yn.s text_drawbox.s level_end.s \

2
games/duke/README Normal file
View File

@ -0,0 +1,2 @@
demake proof-of-concept of Duke Nukem1 for Apple II

View File

@ -1,5 +1,5 @@
PNG2GR = ../../gr-utils/png2gr
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: level1_graphics.inc level2_graphics.inc

View File

@ -1,7 +1,10 @@
DOS33 = ../dos33fs-utils/dos33
TXT2BAS = ../asoft_basic-utils/tokenize_asoft
SHAPETABLE = ../hgr-utils/shape_table
SOUNDCONVERT = ../asoft_sound/asoft_sound
DOS33 = ../../utils/dos33fs-utils/dos33
TXT2BAS = ../../utils/asoft_basic-utils/tokenize_asoft
SHAPETABLE = ../../utils/hgr-utils/shape_table
SOUNDCONVERT = ../../utils/asoft_sound/asoft_sound
]TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
all: glados33.dsk

View File

@ -1,19 +1,19 @@
PCX2HGR = ../../hgr-utils/pcx2hgr
DOS33 = ../../dos33fs-utils/dos33
TXT2BAS = ../../asoft_basic-utils/tokenize_asoft
SHAPETABLE = ../../hgr-utils/shape_table
PCX2HGR = ../../../utils/hgr-utils/pcx2hgr
DOS33 = ../../../utils/dos33fs-utils/dos33
TXT2BAS = ../../../utils/asoft_basic-utils/tokenize_asoft
SHAPETABLE = ../../../utils/hgr-utils/shape_table
all: ksp.dsk
$(TXT2BAS):
cd ../../asoft_basic-utils && make
cd ../../../utils/asoft_basic-utils && make
$(SHAPETABLE):
cd ../../hgr-utils && make
cd ../../../utils/hgr-utils && make
$(PCX2HGR):
cd ../../hgr-utils && make
cd ../../../utils/hgr-utils && make
ACMPLX.BAS: acmplx.bas $(TXT2BAS)
$(TXT2BAS) < acmplx.bas > ACMPLX.BAS

View File

@ -1,8 +1,8 @@
PCX2HGR = ../../hgr-utils/pcx2hgr
DOS33 = ../../dos33fs-utils/dos33
TXT2BAS = ../../asoft_basic-utils/tokenize_asoft
SHAPETABLE = ../../hgr-utils/shape_table
MAKEB = ../../dos33fs-utils/make_b
PCX2HGR = ../../../utils/hgr-utils/pcx2hgr
DOS33 = ../../../utils/dos33fs-utils/dos33
TXT2BAS = ../../../utils/asoft_basic-utils/tokenize_asoft
SHAPETABLE = ../../../utils/hgr-utils/shape_table
MAKEB = ../../../utils/dos33fs-utils/make_b
LD65 = /usr/local/bin/ld65
CA65 = /usr/local/bin/ca65

View File

@ -1,11 +1,14 @@
include ../Makefile.inc
include ../../Makefile.inc
DOS33 = ../../utils/dos33fs-utils/dos33
DOS33_RAW = ../../utils/dos33fs-utils/dos33_raw
PNG_TO_40x96 = ../../utils/gr-utils/png_to_40x96
PNG_TO_40x48D = ../../utils/gr-utils/png_to_40x48d
PNG2RLE = ../../utils/gr-utils/png2rle
B2D = ../../utils/bmp2dhr/b2d
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
DOS33 = ../dos33fs-utils/dos33
DOS33_RAW = ../dos33fs-utils/dos33_raw
PNG_TO_40x96 = ../gr-utils/png_to_40x96
PNG_TO_40x48D = ../gr-utils/png_to_40x48d
PNG2RLE = ../gr-utils/png2rle
B2D = ../bmp2dhr/b2d
all: mist.dsk mist_side2.dsk mist_side3.dsk
@ -88,7 +91,7 @@ mist_side3.dsk: WBOOT3 MECHE SELENA STONEY SUB
###
WBOOT2: wrong_boot2.o
ld65 -o WBOOT2 wrong_boot2.o -C ../linker_scripts/apple2_800.inc
ld65 -o WBOOT2 wrong_boot2.o -C ../../linker_scripts/apple2_800.inc
wrong_boot2.o: wrong_boot2.s
ca65 -o wrong_boot2.o wrong_boot2.s -l wrong_boot2.lst
@ -96,7 +99,7 @@ wrong_boot2.o: wrong_boot2.s
###
WBOOT3: wrong_boot3.o
ld65 -o WBOOT3 wrong_boot3.o -C ../linker_scripts/apple2_800.inc
ld65 -o WBOOT3 wrong_boot3.o -C ../../linker_scripts/apple2_800.inc
wrong_boot3.o: wrong_boot3.s
ca65 -o wrong_boot3.o wrong_boot3.s -l wrong_boot3.lst
@ -105,7 +108,7 @@ wrong_boot3.o: wrong_boot3.s
###
QBOOT: qboot_sector.o
ld65 -o QBOOT qboot_sector.o -C ../linker_scripts/apple2_800.inc
ld65 -o QBOOT qboot_sector.o -C ../../linker_scripts/apple2_800.inc
qboot_sector.o: qboot_sector.s qboot_stage2.s
ca65 -o qboot_sector.o qboot_sector.s -l qboot_sector.lst
@ -113,7 +116,7 @@ qboot_sector.o: qboot_sector.s qboot_stage2.s
###
TEXT_TITLE: text_title.o
ld65 -o TEXT_TITLE text_title.o -C ../linker_scripts/apple2_800.inc
ld65 -o TEXT_TITLE text_title.o -C ../../linker_scripts/apple2_800.inc
text_title.o: text_title.s text_print.s wait_a_bit.s
ca65 -o text_title.o text_title.s -l text_title.lst
@ -122,7 +125,7 @@ text_title.o: text_title.s text_print.s wait_a_bit.s
###
QLOAD: qload.o
ld65 -o QLOAD qload.o -C ../linker_scripts/apple2_1200.inc
ld65 -o QLOAD qload.o -C ../../linker_scripts/apple2_1200.inc
qload.o: qload.s qboot.inc \
gr_copy.s gr_offsets.s gr_pageflip.s gr_putsprite_crop.s \
@ -135,7 +138,7 @@ qload.o: qload.s qboot.inc \
###
LOADER: loader.o
ld65 -o LOADER loader.o -C ../linker_scripts/apple2_1000.inc
ld65 -o LOADER loader.o -C ../../linker_scripts/apple2_1000.inc
loader.o: loader.s \
gr_copy.s gr_offsets.s gr_pageflip.s gr_putsprite_crop.s \
@ -147,7 +150,7 @@ loader.o: loader.s \
###
SAVE1: save1.o
ld65 -o SAVE1 save1.o -C ../linker_scripts/apple2_e00.inc
ld65 -o SAVE1 save1.o -C ../../linker_scripts/apple2_e00.inc
save1.o: save1.s
ca65 -o save1.o save1.s -l save1.lst
@ -155,7 +158,7 @@ save1.o: save1.s
###
SAVE2: save2.o
ld65 -o SAVE2 save2.o -C ../linker_scripts/apple2_e00.inc
ld65 -o SAVE2 save2.o -C ../../linker_scripts/apple2_e00.inc
save2.o: save2.s
ca65 -o save2.o save2.s -l save2.lst
@ -163,7 +166,7 @@ save2.o: save2.s
###
SAVE3: save3.o
ld65 -o SAVE3 save3.o -C ../linker_scripts/apple2_e00.inc
ld65 -o SAVE3 save3.o -C ../../linker_scripts/apple2_e00.inc
save3.o: save3.s
ca65 -o save3.o save3.s -l save3.lst
@ -171,7 +174,7 @@ save3.o: save3.s
###
SAVE4: save4.o
ld65 -o SAVE4 save4.o -C ../linker_scripts/apple2_e00.inc
ld65 -o SAVE4 save4.o -C ../../linker_scripts/apple2_e00.inc
save4.o: save4.s
ca65 -o save4.o save4.s -l save4.lst
@ -179,7 +182,7 @@ save4.o: save4.s
###
SAVE5: save5.o
ld65 -o SAVE5 save5.o -C ../linker_scripts/apple2_e00.inc
ld65 -o SAVE5 save5.o -C ../../linker_scripts/apple2_e00.inc
save5.o: save5.s
ca65 -o save5.o save5.s -l save5.lst
@ -208,7 +211,7 @@ common_routines.inc: qload.lst generate_common
####
MIST_TITLE: mist_title.o
ld65 -o MIST_TITLE mist_title.o -C ../linker_scripts/apple2_4000.inc
ld65 -o MIST_TITLE mist_title.o -C ../../linker_scripts/apple2_4000.inc
mist_title.o: mist_title.s zp.inc hardware.inc common_defines.inc \
common_routines.inc \

View File

@ -1,8 +1,8 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
TEXT2GR = ../../gr-utils/text2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
TEXT2GR = ../../../utils/gr-utils/text2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: octagon_books.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: arbor_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: cabin_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: channel_graphics.inc

View File

@ -1,5 +1,5 @@
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: dentist_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: dni_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: generator_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: meche_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: mist_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: nibel_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: octagon_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: selena_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: ship_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: stoney_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: sub_graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: viewer_graphics.inc

View File

@ -1,11 +1,13 @@
include ../Makefile.inc
include ../../Makefile.inc
DOS33 = ../../utils/dos33fs-utils/dos33
DOS33_RAW = ../../utils/dos33fs-utils/dos33_raw
PNG_TO_40x96 = ../../utils/gr-utils/png_to_40x96
PNG_TO_40x48D = ../../utils/gr-utils/png_to_40x48d
PNG2RLE = ../../utils/gr-utils/png2rle
B2D = ../../utils/bmp2dhr/b2d
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
DOS33 = ../dos33fs-utils/dos33
DOS33_RAW = ../dos33fs-utils/dos33_raw
PNG_TO_40x96 = ../gr-utils/png_to_40x96
PNG_TO_40x48D = ../gr-utils/png_to_40x48d
PNG2RLE = ../gr-utils/png2rle
B2D = ../bmp2dhr/b2d
all: monkey.dsk
@ -19,14 +21,14 @@ monkey.dsk: HELLO LOADER TITLE MONKEY
###
HELLO: hello.bas
../asoft_basic-utils/tokenize_asoft < hello.bas > HELLO
$(TOKENIZE) < hello.bas > HELLO
####
###
LOADER: loader.o
ld65 -o LOADER loader.o -C ../linker_scripts/apple2_1000.inc
ld65 -o LOADER loader.o -C ../../linker_scripts/apple2_1000.inc
loader.o: loader.s
ca65 -o loader.o loader.s -l loader.lst
@ -34,7 +36,7 @@ loader.o: loader.s
###
TITLE: title.o
ld65 -o TITLE title.o -C ../linker_scripts/apple2_2000.inc
ld65 -o TITLE title.o -C ../../linker_scripts/apple2_2000.inc
title.o: title.s \
graphics_intro/title_graphics.inc \
@ -47,7 +49,7 @@ title.o: title.s \
MONKEY: monkey.o
ld65 -o MONKEY monkey.o -C ../linker_scripts/apple2_2000.inc
ld65 -o MONKEY monkey.o -C ../../linker_scripts/apple2_2000.inc
monkey.o: monkey.s zp.inc hardware.inc common_defines.inc \
graphics/graphics.inc \

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: graphics.inc

View File

@ -1,7 +1,7 @@
#include ../Makefile.inc
PNG2RLE = ../../gr-utils/png2rle
PNG2GR = ../../gr-utils/png2gr
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
all: title_graphics.inc

View File

@ -1,8 +1,9 @@
include ../Makefile.inc
include ../../Makefile.inc
DOS33 = ../dos33fs-utils/dos33
PNG2RLE = ../gr-utils/png2rle
PNG2LZ4 = ../gr-utils/png2lz4
DOS33 = ../../utils/dos33fs-utils/dos33
PNG2RLE = ../../utils/gr-utils/png2rle
PNG2LZ4 = ../../utils/gr-utils/png2lz4
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
all: ootw.dsk ootw_side2.dsk ootw_side3.dsk
@ -48,7 +49,7 @@ ootw_side3.dsk: HELLO TITLE ENDING \
####
OOTW_C1: ootw_c1.o
ld65 -o OOTW_C1 ootw_c1.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C1 ootw_c1.o -C ../../linker_scripts/apple2_1700.inc
ootw_c1.o: ootw_c1.s \
gr_copy.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -79,7 +80,7 @@ ootw_c1.o: ootw_c1.s \
####
OOTW_C2: ootw_c2.o
ld65 -o OOTW_C2 ootw_c2.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C2 ootw_c2.o -C ../../linker_scripts/apple2_1700.inc
ootw_c2.o: ootw_c2.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -102,7 +103,7 @@ ootw_c2.o: ootw_c2.s \
####
OOTW_C3: ootw_c3.o
ld65 -o OOTW_C3 ootw_c3.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C3 ootw_c3.o -C ../../linker_scripts/apple2_1700.inc
ootw_c3.o: ootw_c3.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -116,7 +117,7 @@ ootw_c3.o: ootw_c3.s \
###
OOTW_C4: ootw_c4.o
ld65 -o OOTW_C4 ootw_c4.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C4 ootw_c4.o -C ../../linker_scripts/apple2_1700.inc
ootw_c4.o: ootw_c4.s \
gr_copy.s gr_twoscreen_scroll.s gr_fast_clear.s gr_pageflip.s \
@ -133,7 +134,7 @@ ootw_c4.o: ootw_c4.s \
###
OOTW_C5: ootw_c5.o
ld65 -o OOTW_C5 ootw_c5.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C5 ootw_c5.o -C ../../linker_scripts/apple2_1700.inc
ootw_c5.o: ootw_c5.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -147,7 +148,7 @@ ootw_c5.o: ootw_c5.s \
###
OOTW_C6: ootw_c6.o
ld65 -o OOTW_C6 ootw_c6.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C6 ootw_c6.o -C ../../linker_scripts/apple2_1700.inc
ootw_c6.o: ootw_c6.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -160,7 +161,7 @@ ootw_c6.o: ootw_c6.s \
###
OOTW_C7: ootw_c7.o
ld65 -o OOTW_C7 ootw_c7.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C7 ootw_c7.o -C ../../linker_scripts/apple2_1700.inc
ootw_c7.o: ootw_c7.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -173,7 +174,7 @@ ootw_c7.o: ootw_c7.s \
###
OOTW_C8: ootw_c8.o
ld65 -o OOTW_C8 ootw_c8.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C8 ootw_c8.o -C ../../linker_scripts/apple2_1700.inc
ootw_c8.o: ootw_c8.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -187,7 +188,7 @@ ootw_c8.o: ootw_c8.s \
###
OOTW_C9: ootw_c9.o
ld65 -o OOTW_C9 ootw_c9.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C9 ootw_c9.o -C ../../linker_scripts/apple2_1700.inc
ootw_c9.o: ootw_c9.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -201,7 +202,7 @@ ootw_c9.o: ootw_c9.s \
###
OOTW_C10: ootw_c10.o
ld65 -o OOTW_C10 ootw_c10.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C10 ootw_c10.o -C ../../linker_scripts/apple2_1700.inc
ootw_c10.o: ootw_c10.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -215,7 +216,7 @@ ootw_c10.o: ootw_c10.s \
###
OOTW_C11: ootw_c11.o
ld65 -o OOTW_C11 ootw_c11.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C11 ootw_c11.o -C ../../linker_scripts/apple2_1700.inc
ootw_c11.o: ootw_c11.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -229,7 +230,7 @@ ootw_c11.o: ootw_c11.s \
###
OOTW_C12: ootw_c12.o
ld65 -o OOTW_C12 ootw_c12.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C12 ootw_c12.o -C ../../linker_scripts/apple2_1700.inc
ootw_c12.o: ootw_c12.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -243,7 +244,7 @@ ootw_c12.o: ootw_c12.s \
###
OOTW_C13: ootw_c13.o
ld65 -o OOTW_C13 ootw_c13.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C13 ootw_c13.o -C ../../linker_scripts/apple2_1700.inc
ootw_c13.o: ootw_c13.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -260,7 +261,7 @@ ootw_c13.o: ootw_c13.s \
###
OOTW_C14: ootw_c14.o
ld65 -o OOTW_C14 ootw_c14.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C14 ootw_c14.o -C ../../linker_scripts/apple2_1700.inc
ootw_c14.o: ootw_c14.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -274,7 +275,7 @@ ootw_c14.o: ootw_c14.s \
###
OOTW_C15: ootw_c15.o
ld65 -o OOTW_C15 ootw_c15.o -C ../linker_scripts/apple2_1700.inc
ld65 -o OOTW_C15 ootw_c15.o -C ../../linker_scripts/apple2_1700.inc
ootw_c15.o: ootw_c15.s \
gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \
@ -296,7 +297,7 @@ ootw_c15.o: ootw_c15.s \
####
AUDIO_TEST: audio.o
ld65 -o AUDIO_TEST audio.o -C ../linker_scripts/apple2_1700.inc
ld65 -o AUDIO_TEST audio.o -C ../../linker_scripts/apple2_1700.inc
audio.o: audio.s
ca65 -o audio.o audio.s -l audio.lst
@ -305,7 +306,7 @@ audio.o: audio.s
####
INTRO: intro.o
ld65 -o INTRO intro.o -C ../linker_scripts/apple2_1700_9000.inc
ld65 -o INTRO intro.o -C ../../linker_scripts/apple2_1700_9000.inc
intro.o: intro.s \
gr_copy.s gr_fast_clear.s gr_pageflip.s gr_unrle.s gr_putsprite.s \
@ -352,7 +353,7 @@ intro_data_01.lz4: intro_data_01
truncate -s-8 intro_data_01.lz4
intro_data_01: intro_data_01.o
ld65 -o intro_data_01 intro_data_01.o -C ../linker_scripts/apple2_9000.inc
ld65 -o intro_data_01 intro_data_01.o -C ../../linker_scripts/apple2_9000.inc
intro_data_01.o: intro_data_01.s
ca65 -o intro_data_01.o intro_data_01.s -l intro_data_01.lst
@ -363,7 +364,7 @@ intro_data_04.lz4: intro_data_04
truncate -s-8 intro_data_04.lz4
intro_data_04: intro_data_04.o
ld65 -o intro_data_04 intro_data_04.o -C ../linker_scripts/apple2_9000.inc
ld65 -o intro_data_04 intro_data_04.o -C ../../linker_scripts/apple2_9000.inc
intro_data_04.o: intro_data_04.s
ca65 -o intro_data_04.o intro_data_04.s -l intro_data_04.lst
@ -374,7 +375,7 @@ intro_data_06.lz4: intro_data_06
truncate -s-8 intro_data_06.lz4
intro_data_06: intro_data_06.o
ld65 -o intro_data_06 intro_data_06.o -C ../linker_scripts/apple2_9000.inc
ld65 -o intro_data_06 intro_data_06.o -C ../../linker_scripts/apple2_9000.inc
intro_data_06.o: intro_data_06.s
ca65 -o intro_data_06.o intro_data_06.s -l intro_data_06.lst
@ -385,7 +386,7 @@ intro_data_08.lz4: intro_data_08
truncate -s-8 intro_data_08.lz4
intro_data_08: intro_data_08.o
ld65 -o intro_data_08 intro_data_08.o -C ../linker_scripts/apple2_9000.inc
ld65 -o intro_data_08 intro_data_08.o -C ../../linker_scripts/apple2_9000.inc
intro_data_08.o: intro_data_08.s
ca65 -o intro_data_08.o intro_data_08.s -l intro_data_08.lst
@ -396,7 +397,7 @@ intro_data_09.lz4: intro_data_09
truncate -s-8 intro_data_09.lz4
intro_data_09: intro_data_09.o
ld65 -o intro_data_09 intro_data_09.o -C ../linker_scripts/apple2_9000.inc
ld65 -o intro_data_09 intro_data_09.o -C ../../linker_scripts/apple2_9000.inc
intro_data_09.o: intro_data_09.s
ca65 -o intro_data_09.o intro_data_09.s -l intro_data_09.lst
@ -407,7 +408,7 @@ intro_data_09.o: intro_data_09.s
####
LOADER: loader.o
ld65 -o LOADER loader.o -C ../linker_scripts/apple2_1400.inc
ld65 -o LOADER loader.o -C ../../linker_scripts/apple2_1400.inc
loader.o: loader.s
ca65 -o loader.o loader.s -l loader.lst
@ -415,7 +416,7 @@ loader.o: loader.s
####
LOADER2: loader2.o
ld65 -o LOADER2 loader2.o -C ../linker_scripts/apple2_1400.inc
ld65 -o LOADER2 loader2.o -C ../../linker_scripts/apple2_1400.inc
loader2.o: loader2.s
ca65 -o loader2.o loader2.s -l loader2.lst
@ -423,7 +424,7 @@ loader2.o: loader2.s
####
TITLE: title.o
ld65 -o TITLE title.o -C ../linker_scripts/apple2_d00.inc
ld65 -o TITLE title.o -C ../../linker_scripts/apple2_d00.inc
title.o: title.s loader.s
ca65 -o title.o title.s -l title.lst
@ -434,19 +435,19 @@ title.o: title.s loader.s
HELLO: hello.bas
../asoft_basic-utils/tokenize_asoft < hello.bas > HELLO
$(TOKENIZE) < hello.bas > HELLO
####
HELLO2: hello2.bas
../asoft_basic-utils/tokenize_asoft < hello2.bas > HELLO2
$(TOKENIZE) < hello2.bas > HELLO2
#####
ENDING: ending.o
ld65 -o ENDING ending.o -C ../linker_scripts/apple2_1700.inc
ld65 -o ENDING ending.o -C ../../linker_scripts/apple2_1700.inc
ending.o: ending.s \
pt3_lib_core.s pt3_lib_init.s pt3_lib_mockingboard_detect.s \
@ -462,7 +463,7 @@ compress_test.inc: intro_graphics/07_soda/drinking01.png
$(PNG2LZ4) asm intro_graphics/07_soda/drinking01.png test_lz4 >> compress_test.inc
COMPRESS-TEST: compress_test.o
ld65 -o COMPRESS-TEST compress_test.o -C ../linker_scripts/apple2_2000.inc
ld65 -o COMPRESS-TEST compress_test.o -C ../../linker_scripts/apple2_2000.inc
compress_test.o: compress_test.s lz4_decode.s compress_test.inc
ca65 -o compress_test.o compress_test.s -l compress_test.lst

View File

@ -1,8 +1,9 @@
include ../Makefile.inc
include ../../Makefile.inc
DOS33 = ../dos33fs-utils/dos33
PNG_TO_40x48D = ../gr-utils/png_to_40x48d
B2D = ../bmp2dhr/b2d
DOS33 = ../../utils/dos33fs-utils/dos33
PNG_TO_40x48D = ../../utils/gr-utils/png_to_40x48d
B2D = ../../utils/bmp2dhr/b2d
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
all: space_bars.dsk
@ -14,7 +15,7 @@ space_bars.dsk: SPACE_BARS HELLO
####
SPACE_BARS: space_bars.o
ld65 -o SPACE_BARS space_bars.o -C ../linker_scripts/apple2_4000.inc
ld65 -o SPACE_BARS space_bars.o -C ../../linker_scripts/apple2_4000.inc
space_bars.o: space_bars.s instructions.s \
level3_earth.s level6_saturn.s \

5
games/space_bars/README Normal file
View File

@ -0,0 +1,5 @@
proof of concept of a game that uses vapor-lock/cycle counting
to have mid-screen mode switches
this is hard to do

134
games/tb_6502/Changelog Normal file
View File

@ -0,0 +1,134 @@
8 April 2003
+ Got simple hello world to compile and run when entered in hex
by hand [ od -t x1 hello ] into apple emulator.
+ start work on add-file-to-disk-image program
10 April 2003
+ Add to disk program now lets you add arbitrary files to a disk image.
+ Hello World program now works from "BRUN TB_6502"
11 April 2003
+ Move from default Apple start addy of $800 to $c00 so we can
use low-res page flipping (page1 is from $800-$bff)
+ Got print_text_xy routine working
+ Got blit working! VMW opening screen now comes up!
14 April 2003
+ RLE compress the sprites
+ get title screen displaying after figuring out minor problem
[was > 256 bytes]
15 April 2003
+ Add support for in-line x and y on put_text_xy
16 April 2003
+ Worked on dos3.3 utils rather than any useful menu stuff
9 May 2003
+ Have menu partially working, plus the about and phobos sprites loading
15 May 2003
+ Have "ABOUT" running the way I like, and not as cluttered as it was.
28 May 2003
+ Fix up printxy to correctly wrap at 8-byte boundary
+ have the story output text set up correctly.
+ add a "clear_bottom_ function.
1 June 2003
+ Story works
+ Spent 3 hours figuring out why put_text_xy have sporadic problem.
Stupid 6502 and no-16-bit addition. So very tired...
12 June 2003
+ Add arrow key support
+ Faster clear-screen
13 June 2003
+ Fix arrow keys being backwards, add escape key support
21 June 2003
+ Get normal TB left/right support, and clipping.
+ Add missile support
+ Fix various minor bugs.
+ Set up page flipping. Make clear_screen, clear_bottom, and blit
handle this properly
+ Get preliminary shields/level/score indicator working
+ (yes my gf was out of town, how can you guess)
11 July 2003
+ Got an enemy to appear in upper left
14 July 2003
+ Enemy moving back and forth, but major heisenbug. Why, why, why?
15 July 2003
+ Not heisenbug at all. Was running the move-enemy routine when
no enemy.out. Glad I didn't post on usenet asking why my code
was broken!
16 July 2003
+ Minimal y movement implemented
17 July 2003
+ Added random number generator
18 July 2003
+ Re structure enemy handling code to do a copy to zero page first,
thus streamlining things
+ Have missile <-> enemy collision detection working
+ Have minimal score keeping working
+ Have minimal enemy spawning working
+ (Yes gf was out on work related business, how did you guess)
29 August 2003
+ Long delay due to move to Ithaca
+ Annoying work getting 16-bit BCD printing to work. Harder than
it looks!
30 August 2003
+ Implement Proper Collision detection
+ Enemies can actually damage you
+ Explosions no longer move
+ Have "GAME OVER" print when you die
7 September 2003
+ Have it print "Level 1" at start of level
27 September 2003
+ HUGELY busy with grad school. Trying to get this
done for minigames competition
28 September 2003
+ Actual varied levels working. Trying to adjust speed for playability.
+ Added two more enemies, as having 8 is easier to do with mask instructions
;)
+ Attempting to add Boss.
+ Added shield increment every 100 points
+ S now toggles sound
+ P now pauses
+ While waiting for keypress, random number gen seeded
+ Updated timinings. yae is too slow :( am trusting
xapple2 as it seems to play most other games properly.
Should fire up my _real_ IIe.
11 July 2004
+ Finally got around to uploading on my real IIe.
Subjective delay timing, seems to work.
+ Boss seems to act irregularly?
13 July 2004
+ Scrolling stars implemented.
18 July 2004
+ "Ending" for end of level 1 ported over.
+ Bonuses added
+ Hi-score (though not to disk) implemented
+ Final balancing on my Apple IIe Platinum
+ Fix some minor bugs
+ Fixed bug where unitialized memory was causing star scrolling to mess up
+ Bumped version number to 1.0
24 July 2004
+ Added sort-of-working paddle/joystick code.

233
games/tb_6502/FAQ.tb_6502 Normal file
View File

@ -0,0 +1,233 @@
FAQ. Some questions shamelessly stolen from the tb_asm FAQ
Q. Why?
A. My friend <A href="http://www.deater.net/john">John</A> got a Gameboy
Advance for Christmas. He suggested I port my game
<A href="http://www.deater.net/weave/vmwprod/tb1">Tom Bombem</A> to it.
In actuality the specs of the GBA are similar to the machine I
originally wrote TB1 on. It was on a 386-33 with 320x200x256 graphics
and constrained to 640kB of RAM. The game was written in 16-bit
PASCAL with some 32-bit assembly.
I somehow got side-tracked into an 8k Linux x86 text-mode version first,
and then it seemed obvious to port it to the 6502. Finally the disks
full of poorly written way-to-slow BASIC space games I wrote when
I was in elementary school have been vindicated!
Q. The game runs too fast/too slow! It is unplayable!
A. The game has been balanced and tested on an actual Apple IIe platinum.
If you are running on an emulator, your emulator probably isn't
emulating 100% accurately.
If you are on a real Apple IIe... well it's probably my fault.
If you're clever you can find the timing code in the source
and fix it yourself.
Q. Why did it take you so long to finish?
A. I originally rushed to get this game entered in the 2003 Minigames
Competition in the 4k game section. I had to cut down on the
features a lot to get it to fit in 4k.
Despite all this work, I finished 53rd or so. Most of the
complaints were negative because there aren't that many good Apple ][
emulators out there, but a highlight was the infamous "blocky graphics"
comment by the Atari 2600 programmer.
Anyway this experience burned me out on the whole concept for a bit,
plus I started grad school which sucked up most of my time.
But anyway I got a chance to finish it this summer.
Q. How did you do the graphics?
A. With <A href="http://www.thegimp.org">The Gimp</A>. Used 16 color indexed
palette. Saved as xpm. Edited with text editor.
Q. Why LOW-RES graphics mode?
A. Because I like 16 colors. High-res on the Apple ][ really isn't all
that great and can only do 4 colors or so with weird placement rules.
And all of you people with Atari 800s and Commodore's feel free to laugh.
But my code here will run in full 16 color mode even on the Original
Apple ][ released in 1977.
In any case I like blocky graphics, probably dating to my time doing
ANSI graphics for BBS's in the early 90s.
And don't think low-res mode was a cheating way out. The Apple ][
framebuffer is _horribly_ convoluted and non-linear. Apparently
this saved some chips on the memory refresh... but man is it a pain
to program.
Q. Why is all the text in this game SHOUTING AT ME?
A. For extra perversity, I want the game to work on all machines
back to the original 1977 Apple ][. Lower-case letters were an
optional add-on until the Apple //e came out much later.
Q. What is the high score?
A. A bit of a silly question as its impossible to prove.
The highest _possible_ score is 9999 I am pretty sure, due
to the limitations of a 16 bit BCD number (which is how the
score is stored).
Q. Why does the ship have its engines constantly on, even though
it is moving at a constant velocity?
A. Ummmm... friction. Yeah... space friction.
Q. Why are the stars moving so quickly? Are you going faster than light?
A. If you look closely you'll notice the stars repeat. Hence you
are really flying very fast in a big circle. Hey, maybe that's
why the engine is constantly firing!
Q. Where in that tiny ship are all of those missiles stored?
A. In the seventh dimension.
Q. Why the seventh dimension?
A. The others were all full.
Q. Why is there a guinea pig in the game?
A. A local guinea pig threatened me with violence if I did not include
a picture of her.
Q. What have you learned from all this assembly programming?
A. I'm just reminded what Professor Bruce Jacob always said...
A computer is just a state machine.
Q. Why are there only 6 enemies / 2 missiles / shields go up at 100/ etc?
A. Game balance. Just trying to keep it challenging yet not overwhlmingly
so. [For the original tb1 it was "because my 386 can't keep up" but
that should be less of a problem these days].
If you _must_ have it some other way, feel free to mess with the constants
on the first page of the tb_6502.s file, but I cannot guarantee what
the consequences might be!
Q. Will there be a sequel?
A. Yes, it will be released shortly before either the release of
"Duke Nukem Forever (tm)" or the heat death of the universe,
which ever happens first.
Q. Why can't Vince stay consitent between "HISCORE" and "HIGH SCORE"
including all possibly variations of "HI-SCORE" "HIGH_SCORE" usw?
A. The world may never know.
Q. What does "usw" mean?
A. Und So Weiter.
Q. That wasn't helpful.
A. This isn't a question.
Q. What's the highest level you can get to?
A. No matter how you try, once you get to level 7 it will
keep repeating. This is because I multiply the level
by 16 in various places for enemy movement, and it it goes
above 7 then the byte will be negative causing
Bad Things(tm) to happen.
Q. Well why don't you modify the code so it doesn't go haywire
after level 7?
A. I am lazy. Also it should be too hard to get to level 7 anyway
Q. What are the enemies supposed to be?
A. An envelope, a clip-board, a cigarette, a telephone, a dollar-bill,
and an un-identified yellow thing, possibly a banana. All things
malicious marketers might have in excess.
The apple II version has in addition a green toothbrush and a
purple toupe. Those wacky marketers!
Q. How come the stars appear in straight bands insteas of scattered in the
sky?
A. Because my pseudo-random number algorithm is at times more pseudo
than random.
Q. Why does vince use the stack so often, when it would make much more
sense to backup the Y register to the zero page?
A. Too much intel x86 programming has warped my mind into thinking
stack usage is a good way of mitigating limited register count.
Must remind myself the zero page is like a 256-byte register file.
Q. Why is the 6502 instruction set so obtuse?
A. I HAVE NO IDEA. In coding I keep stumbling across instructions
that I think would be _so_ useful. But they don't exist. But
apparently the instructions I pine for are fairly obvious...
an enhanced 65C02 was released with "bonus" opcodes. Sadly
I cannot use them because of the aforementioned want of Apple ][
compatibility [the 65C02 wasn't around until the //e.
ABS (IND), X indexing : would be great working with structs.
BRA -- Branch Always : a great opcode name, but also remove
the need for 16-bit absolute JMP's when
a short branch would do
DEA -- Decrement Accumulator :
That's right, there's no way to decrement
the accumulator. You have to CLC clear
carry then ADC $FF. Yet you can dec
X or Y with one-byte. Weird.
INA -- Incrememnt Accumlator:
See DEA. Yes, even more perverse. Taking
3 bytes to do what should be a common task.
PHX/PLX
PHY/PLY -- Push/Pop X/Y :
These would be so useful. Otherwise
you can only push/pop the accumulator.
STZ -- Store Zero to Memory :
Would save a lot of LDA #$0 / STA pairs.
TRB/TSB -- Test and Set/Reset bit:
Wow, getting even more CISC here. Atomic
test/set bit instructions. We're ready
for SMP now.

21
games/tb_6502/Makefile Normal file
View File

@ -0,0 +1,21 @@
include ../../Makefile.inc
DOS33 = ../../utils/dos33fs-utils/dos33
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
all: tb_6502.dsk
tb_6502.dsk: TB_6502
$(DOS33) -y tb_6502.dsk BSAVE -a 0x0C00 TB_6502
#TB_6502: tb_6502
# make_b ./tb_6502 ./TB_6502 0xC00
TB_6502: tb_6502.o
ld65 -o TB_6502 tb_6502.o -C ./apple2_c00.inc
tb_6502.o: tb_6502.s
ca65 -o tb_6502.o tb_6502.s -l tb_6502.lst
clean:
rm -f *.lst *.o tb_6502 *~ add_to_disk TB_6502 a.out

View File

@ -0,0 +1,130 @@
TOM BOMBEM: Merciless Marauding Malicious Marketers
6502 Apple IIe Edition
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://www.deater.net/weave/vmwprod/tb1/tb_6502.html
by Vince Weaver <vince@deater.net>
version 1.1 -- 24 July 2004
Quotes about tb_6502:
~~~~~~~~~~~~~~~~~~~~~
"The graphics are crude and blocky."
-- random Atari 2600 developer
System Requirements:
~~~~~~~~~~~~~~~~~~~~
Apple ][ Computer
At least 32kB of RAM
Disk drive, or Super Serial Card to load game
Background:
~~~~~~~~~~~
You are Tom Bombem, a shy new intern on Moonbase Alpha.
Somewhat against your will it has become your job to
defend Earth! See the "Story" option in the game
for the rest of the story.
tb_6502 comes before "tb1: Invasion of the Inanimate Objects"
chronologically, for those who might care.
Keybindings:
~~~~~~~~~~~
Use arrow keys, or i,j,k,m to manuever and navigate menus.
' ' shoots and selects.
'h' displays help. 's' toggles sound 'p' pauses
Options/Hiscore File:
~~~~~~~~~~~~~~~~~~~~~
not implemented yet
Game Play:
~~~~~~~~~~
Manuever your ship avoiding the falling objects. Shoot them.
Only 2 missiles can be in the air at the time [this is _not_ a bug.
it's a limit of your ship's missile guidance system].
Every 100 points your shields will increase.
There are special bonuses you can earn at the end of each level.
+ No Shields Hit : going through an entire level without
having an enemy hit your ship
+ All Enemies Destroyed : all enemies were destroyed before
scrolling off the screen. [Note,
ramming an enemy with your ship
_DOES_ count as destroying it. Just
don't let them get by you]
+ Perfect Shot: Every missile fired hits an enemy.
At the end each level you fight the boss. Then the game starts over
with the enemies moving faster!
Compiling / Running:
~~~~~~~~~~~~~~~~~~~~
RUNNING:
Just obtain an apple emulator. Point it to the tb_6502.dsk image.
Upon booting it should run!
Also, you can get a real Apple II computer and download the disk
image to a real floppy. That is a bit more complicated.
COMPILING:
The following compile instructions assume you are using Linux.
* first you need the c65 package from:
http://www.cc65.org/
To install cc65 you need to unpack, and do a
"make -f make/gcc.mak" from the cc65/src directory.
The utils we need are ca65 and ld65. Copy them somewhere in your
path (ie /usr/local/bin).
* To make the disk image you will need the dos33fsprogs package
of mine, available from:
http://www.deater.net/weave/vmwprod/apple/dos33fs.html
Unpack and instal. "make; make install"
* Now hopefully just type "make" in the tb_6502 directory and
the program should be assembled. "make disk" should copy
the new version to the disk image, assuming all the tools
are installed properly.
About:
~~~~~~
When I was much younger, I would type in BASIC games on the Apple II.
I always wanted to write games myself, but the ones I wrote in BASIC
were too slow. I was just starting to learn assembly when we got
a 386 and I moved on to other things.
But now, only 25 years too late, I finally wrote a playable game!
The hope is maybe eventually using this as a stepping-board to
creating a Game Boy Advance TomBombem game.
This game was originally written for the 4k mini-game competition.
It finished embarassingly low in the standings. I've added some
more features now so it is well over the 4k mark.
Author:
~~~~~~~
Vince Weaver <vince@deater.net>
http://www.deater.net/weave/
Special Thanks to KRG
24 July 2004

BIN
games/tb_6502/SINCOS Normal file

Binary file not shown.

3
games/tb_6502/TODO Normal file
View File

@ -0,0 +1,3 @@
Save high score to disk.
OPTIMIZE!

View File

@ -0,0 +1,12 @@
MEMORY {
ZP: start = $00, size = $1A, type = rw;
RAM: start = $C00, size = $8E00, file = %O;
}
SEGMENTS {
CODE: load = RAM, type = ro;
RODATA: load = RAM, type = ro;
DATA: load = RAM, type = rw;
BSS: load = RAM, type = bss, define = yes;
ZEROPAGE: load = ZP, type = zp;
}

BIN
games/tb_6502/tb_6502.dsk Normal file

Binary file not shown.

4291
games/tb_6502/tb_6502.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,173 @@
/* The following code is UGLY. Read at your own risk. --vmw */
#include <stdio.h>
#include <string.h> /* strncpy() */
#include <ctype.h> /* isdigit() */
#include <fcntl.h> /* open() */
#include <unistd.h> /* close() */
char dos_color_to_apple[16]=
{0, /* 0 black */
2, /* 1 blue */
4, /* 2 green */
7, /* 3 cyan */
1, /* 4 red */
3, /* 5 purple */
8, /* 6 brown */
10,/* 7 l grey */
5, /* 8 d grey */
6, /* 9 l blue */
12, /*10 l green */
14, /*11 l cyan */
9, /*12 l red */
11, /*13 pink */
13, /*14 yellow */
15, /* 15 white */
}
;
int get_number(char *string, int *pointer) {
int temp_number;
if (string[*pointer]=='0') {
/* Hexadecimal */
if (string[*pointer+1]=='x') {
(*pointer)++;
(*pointer)++;
temp_number=0;
while(isxdigit(string[*pointer])) {
if ((string[*pointer]>='a') && (string[*pointer]<='f'))
temp_number=16*temp_number+(10+(string[*pointer]-'a'));
if ((string[*pointer]>='A') && (string[*pointer]<='F'))
temp_number=16*temp_number+(10+(string[*pointer]-'A'));
if ((string[*pointer]>='0') && (string[*pointer]<='9'))
temp_number=16*temp_number+(string[*pointer]-'0');
(*pointer)++;
}
}
else {
/* Octal */
temp_number=0;
while(isdigit(string[*pointer])) {
temp_number=8*temp_number+(string[*pointer]-'0');
(*pointer)++;
}
}
}
else {
/* Decimal */
temp_number=0;
while(isdigit(string[*pointer])) {
temp_number=10*temp_number+(string[*pointer]-'0');
(*pointer)++;
}
}
return temp_number;
}
int main(int argc, char **argv) {
FILE *input,*output;
char input_filename[]="sprites";
int pointer,temp_pointer;
char input_line[BUFSIZ];
char temp_string[BUFSIZ];
int color=0,oldcolor,run;
input=fopen(input_filename,"r");
if (input==NULL) goto file_error;
while(1) {
if ( fgets(input_line,BUFSIZ,input) ==NULL) goto close_file;
pointer=0;
while(pointer<strlen(input_line)) {
/* Comment, we are done */
if (input_line[pointer]=='#') goto done_with_string;
/* end of line, we are done */
if (input_line[pointer]=='\n') goto done_with_string;
/* directive */
if (input_line[pointer]=='.') {
if (!strncmp("byte",input_line+pointer+1,4)) {
pointer=5;
printf("\t.byte ");
while(!isdigit(input_line[pointer])) pointer++;
color=get_number(input_line,&pointer);
while(!isdigit(input_line[pointer])) pointer++;
oldcolor=color;
run=1;
while(pointer<strlen(input_line)) {
color=get_number(input_line,&pointer);
if ((color!=oldcolor) || (run>14)) {
printf("$%X,",(run<<4)+dos_color_to_apple[oldcolor]);
run=0;
}
run++;
oldcolor=color;
while(!isdigit(input_line[pointer])) pointer++;
}
if (color!=0) {
printf("$%X,",(run<<4)+dos_color_to_apple[color]);
}
printf("$00\n");
goto done_with_string;
}
else {
printf("Unknown directive!\n");
goto close_file;
}
}
/* end of label */
if (input_line[pointer]==':') {
temp_pointer=pointer;
while( (temp_pointer>0) &&
(input_line[temp_pointer]!='\t') &&
(input_line[temp_pointer]!=' ')) temp_pointer--;
strncpy(temp_string,input_line+temp_pointer,pointer-temp_pointer);
temp_string[pointer]='\0';
printf("\t.byte $00\n");
printf("%s:\n",temp_string);
}
pointer++;
}
done_with_string: ;
}
close_file:
if (input!=NULL) fclose(input);
file_error:
return 0;
}

View File

@ -0,0 +1,26 @@
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
char string[BUFSIZ];
int i;
while(1) {
fgets(string,BUFSIZ,stdin);
if (feof(stdin)) goto done;
printf(";# %s\n",string);
printf(".byte\t");
printf("$%X",string[0]+128);
for (i=1;i<strlen(string);i++) {
printf(",$%X",string[i]+128);
}
printf("\n");
}
done:
return 0;
}

View File

@ -0,0 +1,35 @@
#include <stdio.h>
int random_num(int seed)
{
static int our_seed;
if (seed!=-1) our_seed=seed;
if (our_seed==0) our_seed=13;
our_seed<<=1;
if (our_seed & 0x100) our_seed^=0x87;
our_seed&=0xff;
return our_seed;
}
int main(int argc, char **argv)
{
int i;
int frequency[256];
for(i=0;i<256;i++) frequency[i]=0;
for(i=0;i<4096;i++)
frequency[random_num(-1)]++;
for(i=0;i<256;i++)
printf("%i : %i\n",i,frequency[i]);
}

View File

@ -0,0 +1,15 @@
#include <stdio.h>
int main(int argc, char **argv) {
int i;
for(i=0;i<256;i++) {
printf("%i = %x = %i\n",i,i,(26+27*i+5*i*i)/2);
}
return 0;
}

View File

@ -1,15 +1,18 @@
include ../Makefile.inc
include ../../Makefile.inc
DOS33 = ../../utils/dos33fs-utils/dos33
PNG2GR = ../../utils/gr-utils/png2gr
PNG2RLE = ../../utils/gr-utils/png2rle
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
DOS33 = ../dos33fs-utils/dos33
PNG2GR = ../gr-utils/png2gr
PNG2RLE = ../gr-utils/png2rle
ARTDIR = ./art
all: tfv.dsk
$(DOS33):
cd ../dos33fs-utils && make
cd ../../utils/dos33fs-utils && make
tfv.dsk: $(DOS33) HELLO LOADER TFV_TITLE TFV_FLYING TFV_WORLD
$(DOS33) -y tfv.dsk SAVE A HELLO
@ -21,12 +24,12 @@ tfv.dsk: $(DOS33) HELLO LOADER TFV_TITLE TFV_FLYING TFV_WORLD
###
HELLO: hello.bas
../asoft_basic-utils/tokenize_asoft < hello.bas > HELLO
$(TOKENIZE) < hello.bas > HELLO
####
LOADER: loader.o
ld65 -o LOADER loader.o -C ../linker_scripts/apple2_1000.inc
ld65 -o LOADER loader.o -C ../../linker_scripts/apple2_1000.inc
loader.o: loader.s init_vars.s common_defines.inc
ca65 -o loader.o loader.s -l loader.lst
@ -34,7 +37,7 @@ loader.o: loader.s init_vars.s common_defines.inc
###
TFV_TITLE: tfv_title.o
ld65 -o TFV_TITLE tfv_title.o -C ../linker_scripts/apple2_2000.inc
ld65 -o TFV_TITLE tfv_title.o -C ../../linker_scripts/apple2_2000.inc
tfv_title.o: tfv_title.s \
gr_vlin.s tfv_opener.s \
@ -47,7 +50,7 @@ tfv_title.o: tfv_title.s \
###
TFV_FLYING: tfv_flying.o
ld65 -o TFV_FLYING tfv_flying.o -C ../linker_scripts/apple2_2000.inc
ld65 -o TFV_FLYING tfv_flying.o -C ../../linker_scripts/apple2_2000.inc
tfv_flying.o: tfv_flying.s \
zp.inc \
@ -59,7 +62,7 @@ tfv_flying.o: tfv_flying.s \
###
TFV_WORLD: tfv_world.o
ld65 -o TFV_WORLD tfv_world.o -C ../linker_scripts/apple2_2000.inc
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 tfv_battle.s \

View File

@ -3,7 +3,7 @@ include ../Makefile.inc
all:
cd asoft_basic-utils && make
cd asoft_presenter && make
# cd asoft_sound && make
cd asoft_sound && make
# cd bmp2dhr && make
# cd dos33fs-linux2.4 && make
cd dos33fs-utils && make
@ -14,7 +14,7 @@ all:
install:
cd asoft_basic-utils && make install
cd asoft_presenter && make install
# cd asoft_sound && make install
cd asoft_sound && make install
# cd bmp2dhr && make install
# cd dos33fs-linux2.4 && make install
cd dos33fs-utils && make install