diff --git a/asm_routines/text_print.s b/asm_routines/text_print.s index a39506f7..96fa0376 100644 --- a/asm_routines/text_print.s +++ b/asm_routines/text_print.s @@ -39,7 +39,7 @@ print_string_loop: iny bne print_string_loop done_print_string: - rts +; rts ;==================== ; point_to_end_string diff --git a/gr-sim/tfv/README.references b/gr-sim/tfv/README.references index b71e1ddc..67184abe 100644 --- a/gr-sim/tfv/README.references +++ b/gr-sim/tfv/README.references @@ -135,6 +135,12 @@ JC no lights on the football field and the roof of the gym still leaked during basketball games. + There was a dress code. At the time for the girls it was + transitioning from ugly brown (herringbone in the winter) skirts, + and yellow/brown sweater to some sort of horrible green for the + people a few years younger than us. It's not the Apple II palette + making things ugly, it's actually fairly accurate. + Math Office Where the academic team practiced. @@ -213,10 +219,25 @@ Deutsch Klasse German class was also fun, though possibly more fun for us than it was for Frau Potter who had to teach us. + We called her just "Frau" for short, which didn't bother her, + but it shocked all the German exchange students as being excessively + rude as it was sort of like calling her "Woman" or "Lady". + The agents are some weird thing I did where everyone in our class was a secret Starfleet Agent, and were assigned letters. No, it didn't make any sense at the time either. + Half the class was actually male, but we mostly sat on the near side + of the room for some reason. The girls all sat on the pictured + side by the windows (view from where I sat). + For all 4 years. I have no idea why we did that. + There were actually some interesting people in this class, feel + bad for leaving them out but the game engine only budgets 5 talking + spots per room. + + Interesting fact, 3 of the 4 students pictured have gone on + to get PhDs. + Acting Principal One of our favorite teachers. He wore a robo-leg when playing Badminton. The "Since we have no electricity we have no diff --git a/gr-sim/tfv/tfv_backgrounds.c b/gr-sim/tfv/tfv_backgrounds.c index 92fbdb0f..b12eb80b 100644 --- a/gr-sim/tfv/tfv_backgrounds.c +++ b/gr-sim/tfv/tfv_backgrounds.c @@ -650,19 +650,25 @@ unsigned char deutsch_rle[]={ 0xFF,0xF8,0x8F,0x88,0xFF,0x88,0xFF, 0xF8,0x88,0x88,0xFF,0xF8,0x8F,0x88,0xFF, 0x8F,0xFF,0x88,0xF8,0xFF,0x88,0xA3,0x91, - 0xA3,0x99,0xA0,0x22,0x88,0xA3,0x99,0xA0,0x28,0x08,0xA0,0x39,0x00,0x80,0x80,0xA7,0x00, - 0xB8,0x88,0xA0,0x1D,0x00,0x88,0xBB,0xB0,0xA5,0x00, - 0x0B,0xBB,0x88,0xA4,0x00,0xB8,0x88,0xAE,0x00, - 0x88,0xB8,0xA7,0x00,0x88,0xFB,0xA7,0x00,0x2B, - 0xA4,0x00,0x0B,0xBB,0x88,0xAE,0x00,0x88,0xBB, - 0x0B,0xA6,0x00,0xF8,0xFF,0xF0,0xA5,0x00,0x44, - 0x22,0xA5,0x00,0xFF,0x08,0x80,0xAD,0x00,0x88, - 0xF0,0xA7,0x00,0x0F,0x00,0x0F,0xA5,0x00,0x04, - 0x02,0xA4,0x00,0x0F,0x0F,0xAF,0x00,0x77,0x7F,0xB0, - 0xA0,0x25,0x00,0x4F,0x4F,0xA0,0x25,0x00,0x04,0xB4,0x04,0x04,0xA8,0x00, - 0xB0,0xA4,0x00,0xD0,0xA5,0x00,0xB0,0xA0,0x11,0x00,0x8F, - 0x80,0xA9,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0xA4,0x00,0x08,0x08, - 0xA0,0xA9,0x00,0xA1, }; + 0xA3,0x99,0xA0,0x22,0x88,0xA3,0x99,0xA0,0x28,0x08,0xA0,0x50,0x00,0xA3,0x80,0xA8,0x00, + 0xD0,0xD0,0xA8,0x00,0xDD,0xBD,0xA5,0x00,0xB8,0x88, + 0xA6,0x00,0xB8,0xD8,0x00,0x00,0x88,0xBB,0x3B, + 0xA8,0x00,0xDD,0xBB,0xB0,0xA7,0x00,0xDD,0xBB, + 0x0B,0xA3,0x00,0x0B,0xBB,0x88,0xA5,0x00,0x0B, + 0xBB,0xD8,0x00,0x00,0x88,0xFB,0x8B,0xA7,0x00, + 0xD0,0x0D,0xDB,0xA8,0x00,0xDD,0xFF,0xA5,0x00, + 0xFF,0x08,0xA3,0x00,0xFF,0x00,0x00,0x1B,0x08, + 0x00,0x00,0x88,0xFF,0xF8,0xB0,0x00,0x00,0xA4,0x70, + 0x00,0x70,0x7D,0x7D,0x7B,0x00,0xA4,0x70,0x00, + 0x70,0x7F,0x7F,0x7B,0x00,0x7B,0x7F,0x7F,0x70,0x70, + 0x00,0x00,0x0F,0xB0,0x10,0x11,0xA3,0x00,0x70, + 0x7F,0x77,0x07,0xA8,0x00,0x6D,0x80,0xA8,0x00, + 0x8F,0x80,0xA3,0x00,0x80,0x8F,0xA7,0x00,0x11, + 0xA3,0x00,0x07,0xA3,0x88,0xA8,0x00,0x08,0xB8,0xA8,0x00, + 0x08,0xB8,0xA3,0x00,0xB8,0x08,0xA7,0x00,0x11,0x11, + 0xA5,0x00,0xBB,0xA9,0x00,0x8F,0x80,0xA8,0x00,0x8F, + 0x80,0x00,0x80,0x8F,0xA8,0x00,0x11,0x11,0xA5,0x00, + 0x08,0x08,0xA0,0x1E,0x00,0x80,0x88,0xA0,0xA3,0x00,0xA1, }; unsigned char homeroom_rle[]={ 0x28, /* ysize=40 */ 0xA0,0x20,0x00,0x77,0xA6,0x57,0x77,0xA0,0x20,0x00,0x77,0x55,0x55, diff --git a/gr-sim/tfv/tfv_dialog.h b/gr-sim/tfv/tfv_dialog.h index 2b3e80ed..73019f16 100644 --- a/gr-sim/tfv/tfv_dialog.h +++ b/gr-sim/tfv/tfv_dialog.h @@ -38,6 +38,12 @@ #define DIALOG_RACHAEL 24 #define DIALOG_MREE 25 +#define DIALOG_NIRE 26 +#define DIALOG_AGENT_S 27 +#define DIALOG_AGENT_G 28 +#define DIALOG_AGENT_AP 29 +#define DIALOG_FRAU 30 + struct dialog_words { char *words; int next; @@ -175,7 +181,6 @@ struct dialog_type dialog[100]={ [DIALOG_FORD]= { .statement[0].words="557-0868 Utopia BBS is really great!", .statement[0].next=0, - // AMIGA? }, #if 0 AP CALCULUS, TEAM I-1 @@ -193,13 +198,32 @@ struct dialog_type dialog[100]={ LIZBETH BLUME VINCE CON PATILLAS - DEUTSCH - AGENT G - AGENT AP - AGENT S - NIRE - FRAU: DER DIE DAS - +#endif + //DEUTSCH + [DIALOG_NIRE]= { + .statement[0].words="Vince, what are you doing!", + .statement[0].next=0, + // Sue you? + }, + [DIALOG_AGENT_S]= { + .statement[0].words="...", + .statement[0].next=0, + }, + [DIALOG_AGENT_G]= { + .statement[0].words="Cultural experience on Friday!", + .statement[0].next=0, + }, + [DIALOG_AGENT_AP]= { + .statement[0].words="...", + .statement[0].next=0, + }, + [DIALOG_FRAU]= { + .statement[0].words="Immer mit der Ruhe!", + .statement[0].next=0, + .statement[1].words="Karte Spiel", + .statement[1].next=0, + }, +#if 0 HOMEROOM TRAPANI WEAVE! diff --git a/gr-sim/tfv/tfv_mapinfo.h b/gr-sim/tfv/tfv_mapinfo.h index ec06f55b..0ee2b100 100644 --- a/gr-sim/tfv/tfv_mapinfo.h +++ b/gr-sim/tfv/tfv_mapinfo.h @@ -687,6 +687,43 @@ struct map_info_type map_info[34] = { .scatter=SCATTER_NONE, .entry_type=ENTRY_CENTER, .entry_x=0, .entry_y=0, .background_image=deutsch_rle, + .num_locations=5, + .location[0] = { + .name="Nire", + .x0 = 0, .x1 = 6, + .y0 = 25, .y1 = 33, + .destination=DIALOG_NIRE, + .type=LOCATION_CONVERSATION, + }, + .location[1] = { + .name="Agent S", + .x0 = 10, .x1 = 18, + .y0 = 25, .y1 = 33, + .destination=DIALOG_AGENT_S, + .type=LOCATION_CONVERSATION, + }, + .location[2] = { + .name="Agent G", + .x0 = 19, .x1 = 25, + .y0 = 25, .y1 = 33, + .destination=DIALOG_AGENT_G, + .type=LOCATION_CONVERSATION, + }, + .location[3] = { + .name="Agent AP", + .x0 = 26, .x1 = 31, + .y0 = 25, .y1 = 33, + .destination=DIALOG_AGENT_AP, + .type=LOCATION_CONVERSATION, + }, + .location[4] = { + .name="Frau", + .x0 = 32, .x1 = 38, + .y0 = 25, .y1 = 33, + .destination=DIALOG_FRAU, + .type=LOCATION_CONVERSATION, + }, + }, [HOMEROOM]={ // 29: HOMEROOM .name="Homeroom 12E", diff --git a/split_screen/KATC.BIN b/split_screen/KATC.BIN new file mode 100644 index 00000000..d0cf6985 Binary files /dev/null and b/split_screen/KATC.BIN differ diff --git a/split_screen/Makefile b/split_screen/Makefile index 3fade716..2bafc92b 100644 --- a/split_screen/Makefile +++ b/split_screen/Makefile @@ -5,11 +5,12 @@ TOKENIZE = ../asoft_basic-utils/tokenize_asoft all: split.dsk -split.dsk: BISHOP BISHOP.BAS RAINBOW.BAS RAINBOW KATC.BIN +split.dsk: BISHOP BISHOP.BAS RAINBOW.BAS RAINBOW KATC.BIN CREDITS $(DOS33) -y split.dsk BSAVE -a 0x0300 BISHOP $(DOS33) -y split.dsk SAVE A BISHOP.BAS $(DOS33) -y split.dsk SAVE A RAINBOW.BAS $(DOS33) -y split.dsk BSAVE -a 0x0c00 RAINBOW + $(DOS33) -y split.dsk BSAVE -a 0x1000 CREDITS # $(DOS33) -y split.dsk BSAVE -a 0x2000 LENNA.BIN $(DOS33) -y split.dsk BSAVE -a 0x2000 KATC.BIN @@ -31,8 +32,16 @@ RAINBOW: rainbow.o RAINBOW.BAS: rainbow.bas $(TOKENIZE) < rainbow.bas > RAINBOW.BAS +credits.o: credits.s + ca65 -o credits.o credits.s -l credits.lst + +CREDITS: credits.o + ld65 -o CREDITS credits.o -C ../linker_scripts/apple2_1000.inc + + + KATC.BIN: kat.bmp ../bmp2dhr/b2d kat.bmp hgr dither clean: - rm -f *~ *.o *.lst BISHOP RAINBOW + rm -f *~ *.o *.lst BISHOP RAINBOW CREDITS diff --git a/split_screen/credits.s b/split_screen/credits.s new file mode 100644 index 00000000..99c0bd3f --- /dev/null +++ b/split_screen/credits.s @@ -0,0 +1,212 @@ +.include "zp.inc" + + H2 = $2C +; V2 = $2D +; TEMPY = $FB + + HGR = $F3E2 + HPLOT0 = $F457 + HCOLOR = $F6EC +; HLINE = $F819 +; VLINE = $F828 +; COLOR = $F864 +; TEXT = $FB36 +; HOME = $FC58 + + jsr TEXT + jsr HOME + + lda #0 + sta DISP_PAGE + lda #0 + sta DRAW_PAGE + + lda #0 + sta CH + sta CV + lda #line1 + sta OUTH + jsr move_and_print + + inc CV + jsr move_and_print + + inc CV + jsr move_and_print + + inc CV + jsr move_and_print + + inc CV + jsr move_and_print + + inc CV + jsr move_and_print + + ; draw the moon + lda #0 + sta CV + lda #3 + sta CH + jsr htab_vtab ; vtab(1); htab(4) + lda #32 ; inverse space + ldy #0 + sta (BASL),Y + + inc CV + dec CH + jsr htab_vtab + lda #32 + ldy #0 + sta (BASL),Y + + inc CV + jsr htab_vtab + lda #32 + ldy #0 + sta (BASL),Y + + inc CV + inc CH + jsr htab_vtab + lda #32 + ldy #0 + sta (BASL),Y + + ; Wait + + jsr wait_until_keypressed + + ; GR part + bit LORES + bit SET_GR + bit FULLGR + + lda #$44 + sta COLOR + + lda #39 + sta V2 + + lda #28 + +line_loop: + pha + + ldy #0 + + jsr hlin_double + + pla + clc + adc #2 + cmp #48 + bne line_loop + + ; Wait + + jsr wait_until_keypressed + + bit HIRES + + + ; Wait + + jsr wait_until_keypressed + + +display_loop: + ; each scan line 65 cycles + ; 1 cycle each byte (40cycles) + 25 for horizontal + ; Total of 12480 cycles to draw screen + ; Vertical blank = 4550 cycles (70 scan lines) + ; Total of 17030 cycles to get back to where was + + ; 16666 = 17030 x=1021.8 + ; 1000 x + + + ; TODO: find beginning of scan + ; Text mode for 6*8=48 scanlines (3120 cycles) + ; hgr for 64 scalines (4160 cycles) + ; gr for 80 scalines (5200 cycles) + ; vblank = 4550 cycles + + ; text + bit SET_TEXT ; 4 + + ldy #15 ; 2 +loop2: + + ; 5*255+2 = 197 + + ldx #39 ; 2 +loop1: + dex ; 2 + bne loop1 ; 2nt/3 + + dey ; 2 + bne loop2 ; 2nt/3 + + ; hgr + bit HIRES ; 4 + bit SET_GR ; 4 + + ldy #15 ; 2 +loop3: + + ; 5*255+2 = 197 + + ldx #39 ; 2 +loop4: + dex ; 2 + bne loop4 ; 2nt/3 + + dey ; 2 + bne loop3 ; 2nt/3 + + + + ; gr + bit LORES + + ldy #15 ; 2 +loop5: + + ; 5*255+2 = 197 + + ldx #39 ; 2 +loop6: + dex ; 2 + bne loop6 ; 2nt/3 + + dey ; 2 + bne loop5 ; 2nt/3 + + + + + jmp display_loop ; 3 + +wait_until_keypressed: + lda KEYPRESS ; check if keypressed + bpl wait_until_keypressed ; if not, loop + bit KEYRESET + rts + +line1:.asciiz " * . " +line2:.asciiz " * . T A L B O T . " +line3:.asciiz " * F A N T A S Y " +line4:.asciiz " * S E V E N " +line5:.asciiz " . . . " +line6:.asciiz " . " + +.include "../asm_routines/gr_offsets.s" +.include "../asm_routines/text_print.s" +.include "../asm_routines/gr_hlin_double.s" + +.align $1000 + +.incbin "KATC.BIN" diff --git a/split_screen/kat.bmp b/split_screen/kat.bmp index 120bfaf1..d99a2d75 100644 Binary files a/split_screen/kat.bmp and b/split_screen/kat.bmp differ diff --git a/tfv/art/deutsch.png b/tfv/art/deutsch.png index d8d9a8ba..65a38f36 100644 Binary files a/tfv/art/deutsch.png and b/tfv/art/deutsch.png differ