mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-04-16 20:40:18 +00:00
rewind2: get initial scene into final form
This commit is contained in:
parent
32a4f7b7ee
commit
b3fb640730
@ -61,7 +61,7 @@ qload.o: zp.inc hardware.inc common_defines.inc music.inc qload.s \
|
||||
pt3_lib_mockingboard_setup.s interrupt_handler.s \
|
||||
pt3_lib_mockingboard_patch.s \
|
||||
irq_wait.s vblank.s hgr_page_flip.s \
|
||||
hgr_clear_screen.s
|
||||
hgr_clear_screen.s vblank.s
|
||||
ca65 -o qload.o qload.s -l qload.lst
|
||||
|
||||
####
|
||||
|
@ -23,8 +23,6 @@
|
||||
bear:
|
||||
bit KEYRESET ; just to be safe
|
||||
|
||||
lda #0
|
||||
|
||||
;=================================
|
||||
; Unpack base image
|
||||
;=================================
|
||||
@ -41,23 +39,23 @@ bear:
|
||||
; Set DHGR mode
|
||||
;=================================
|
||||
|
||||
|
||||
bit SET_GR
|
||||
bit HIRES
|
||||
bit FULLGR
|
||||
sta AN3 ; set double hires
|
||||
sta EIGHTYCOLON ; 80 column
|
||||
sta SET80COL ; 80 store
|
||||
bit HIRES
|
||||
bit FULLGR
|
||||
sta AN3 ; set double hires
|
||||
sta EIGHTYCOLON ; 80 column
|
||||
; sta SET80COL ; 80 store
|
||||
|
||||
bit PAGE1 ; start in page1
|
||||
bit PAGE1 ; start in page1
|
||||
lda #$20
|
||||
sta DRAW_PAGE ; draw to page2
|
||||
|
||||
;=================================
|
||||
; Unpack further to DHGR
|
||||
;=================================
|
||||
|
||||
|
||||
; full screen grey
|
||||
|
||||
.if 0
|
||||
lda #0
|
||||
sta XSTART
|
||||
lda #100
|
||||
@ -69,9 +67,14 @@ bear:
|
||||
sta color_lookup_smc+2
|
||||
|
||||
jsr decode_image
|
||||
jsr copy_to_aux
|
||||
|
||||
bit PAGE2 ; switch to PAGE2
|
||||
|
||||
jsr wait_until_keypress
|
||||
.endif
|
||||
|
||||
;=================
|
||||
; green1
|
||||
|
||||
lda #0
|
||||
@ -86,7 +89,13 @@ bear:
|
||||
|
||||
jsr decode_image
|
||||
|
||||
jsr wait_until_keypress
|
||||
jsr copy_to_aux
|
||||
jsr wait_vblank
|
||||
bit PAGE2 ; show PAGE2
|
||||
lda #$00 ; draw PAGE1
|
||||
sta DRAW_PAGE
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
; green2
|
||||
|
||||
@ -97,8 +106,15 @@ bear:
|
||||
|
||||
jsr decode_image
|
||||
|
||||
jsr wait_until_keypress
|
||||
jsr copy_to_aux
|
||||
jsr wait_vblank
|
||||
bit PAGE1 ; show PAGE1
|
||||
lda #$20 ; draw PAGE2
|
||||
sta DRAW_PAGE
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
;======
|
||||
; blue1
|
||||
|
||||
lda #8
|
||||
@ -113,8 +129,15 @@ bear:
|
||||
|
||||
jsr decode_image
|
||||
|
||||
jsr wait_until_keypress
|
||||
jsr copy_to_aux
|
||||
jsr wait_vblank
|
||||
bit PAGE2 ; show PAGE2
|
||||
lda #$00 ; draw PAGE1
|
||||
sta DRAW_PAGE
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
;========
|
||||
; blue2
|
||||
|
||||
lda #8
|
||||
@ -124,8 +147,15 @@ bear:
|
||||
|
||||
jsr decode_image
|
||||
|
||||
jsr wait_until_keypress
|
||||
jsr copy_to_aux
|
||||
jsr wait_vblank
|
||||
bit PAGE1 ; show PAGE1
|
||||
lda #$20 ; draw PAGE2
|
||||
sta DRAW_PAGE
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
;=============
|
||||
; red1
|
||||
|
||||
lda #18
|
||||
@ -140,8 +170,15 @@ bear:
|
||||
|
||||
jsr decode_image
|
||||
|
||||
jsr wait_until_keypress
|
||||
jsr copy_to_aux
|
||||
jsr wait_vblank
|
||||
bit PAGE2 ; show PAGE2
|
||||
lda #$00 ; draw PAGE1
|
||||
sta DRAW_PAGE
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
;=========
|
||||
; red2
|
||||
|
||||
lda #18
|
||||
@ -151,9 +188,15 @@ bear:
|
||||
|
||||
jsr decode_image
|
||||
|
||||
jsr wait_until_keypress
|
||||
jsr copy_to_aux
|
||||
jsr wait_vblank
|
||||
bit PAGE1 ; show PAGE1
|
||||
lda #$20 ; draw PAGE2
|
||||
sta DRAW_PAGE
|
||||
|
||||
; jsr wait_until_keypress
|
||||
|
||||
;=========
|
||||
; yellow1
|
||||
|
||||
lda #28
|
||||
@ -168,6 +211,12 @@ bear:
|
||||
|
||||
jsr decode_image
|
||||
|
||||
jsr copy_to_aux
|
||||
jsr wait_vblank
|
||||
bit PAGE2 ; show PAGE2
|
||||
lda #$00 ; draw PAGE1
|
||||
sta DRAW_PAGE
|
||||
|
||||
jsr wait_until_keypress
|
||||
|
||||
|
||||
@ -199,9 +248,18 @@ yloop:
|
||||
ldy YPOS ; load row address
|
||||
lda hposn_low,Y
|
||||
sta OUTL
|
||||
sta AUXOUTL
|
||||
|
||||
lda hposn_high,Y
|
||||
clc
|
||||
adc DRAW_PAGE
|
||||
sta OUTH ; addr=hgr_offset(y);
|
||||
|
||||
lda hposn_high,Y
|
||||
clc
|
||||
adc #$50 ; base is $70
|
||||
sta AUXOUTH
|
||||
|
||||
lda #0 ; for(x=0;x<20;x++) {
|
||||
sta XPOS
|
||||
xloop:
|
||||
@ -268,21 +326,13 @@ check_range:
|
||||
skip_set_colors:
|
||||
|
||||
lda #0
|
||||
bit PAGE1 ; MAIN values
|
||||
sta (OUTL),Y
|
||||
sta (AUXOUTL),Y
|
||||
iny
|
||||
sta (OUTL),Y
|
||||
dey
|
||||
|
||||
bit PAGE2 ; AUX values
|
||||
sta (OUTL),Y
|
||||
sta (AUXOUTL),Y
|
||||
jmp write_out_end
|
||||
|
||||
; iny
|
||||
; sta (OUTL),Y
|
||||
|
||||
|
||||
|
||||
calculate_colors:
|
||||
; AUX0 PBBBAAAA (24)
|
||||
; aux0=(colorsA)|((colorsB&0x7)<<4);
|
||||
@ -294,8 +344,8 @@ calculate_colors:
|
||||
asl ; 2
|
||||
asl ; 2
|
||||
ora COLORSA ; 3
|
||||
bit PAGE2 ; set AUX ; 4
|
||||
sta (OUTL),Y ; AUX0 ; 6
|
||||
; bit PAGE2 ; set AUX ; 4
|
||||
sta (AUXOUTL),Y ; AUX0 ; 6
|
||||
;===
|
||||
; 24
|
||||
|
||||
@ -317,7 +367,7 @@ calculate_colors:
|
||||
lsr ; 2
|
||||
ora AUX1 ; 3
|
||||
iny ; 2
|
||||
sta (OUTL),Y ; AUX1 ; 6
|
||||
sta (AUXOUTL),Y ; AUX1 ; 6
|
||||
;===
|
||||
; 39
|
||||
|
||||
@ -337,7 +387,7 @@ calculate_colors:
|
||||
cmp #8 ; bit 3 into carry ; 2
|
||||
rol MAIN0 ; 3
|
||||
dey ; 2
|
||||
bit PAGE1 ; set MAIN memory ; 4
|
||||
; bit PAGE1 ; set MAIN memory ; 4
|
||||
lda MAIN0 ; 3
|
||||
sta (OUTL),Y ; MAIN0 ; 6
|
||||
;=====
|
||||
@ -354,15 +404,12 @@ calculate_colors:
|
||||
asl ; 2
|
||||
ora COLORSF ; 3
|
||||
lsr ; 2
|
||||
write_out_end:
|
||||
iny ; 2
|
||||
sta (OUTL),Y ; MAIN1 ; 6
|
||||
;====
|
||||
; 24
|
||||
|
||||
; jmp continue_xloop ; 3
|
||||
|
||||
|
||||
write_out_end:
|
||||
|
||||
continue_xloop:
|
||||
iny
|
||||
@ -399,5 +446,7 @@ color_lookup_red:
|
||||
color_lookup_yellow:
|
||||
.byte 0,4,12,14 ; yellow black/brown/orange/yellow
|
||||
|
||||
.include "copy_to_aux.s"
|
||||
|
||||
bear_packed_zx02:
|
||||
.incbin "bear.packed.zx02"
|
||||
|
159
demos/rewind2/bear/copy_to_aux.s
Normal file
159
demos/rewind2/bear/copy_to_aux.s
Normal file
@ -0,0 +1,159 @@
|
||||
; copy 8k from $7000 to either $2000 or $4000 in AUX memory
|
||||
|
||||
copy_to_aux:
|
||||
sta WRAUX
|
||||
lda DRAW_PAGE
|
||||
beq copy_to_aux_page1
|
||||
jmp copy_to_aux_page2
|
||||
|
||||
copy_to_aux_page1:
|
||||
|
||||
ldy #0
|
||||
copy_to_aux_page1_loop:
|
||||
lda $7000,Y
|
||||
sta $2000,Y
|
||||
lda $7100,Y
|
||||
sta $2100,Y
|
||||
lda $7200,Y
|
||||
sta $2200,Y
|
||||
lda $7300,Y
|
||||
sta $2300,Y
|
||||
lda $7400,Y
|
||||
sta $2400,Y
|
||||
lda $7500,Y
|
||||
sta $2500,Y
|
||||
lda $7600,Y
|
||||
sta $2600,Y
|
||||
lda $7700,Y
|
||||
sta $2700,Y
|
||||
lda $7800,Y
|
||||
sta $2800,Y
|
||||
lda $7900,Y
|
||||
sta $2900,Y
|
||||
lda $7A00,Y
|
||||
sta $2A00,Y
|
||||
lda $7B00,Y
|
||||
sta $2B00,Y
|
||||
lda $7C00,Y
|
||||
sta $2C00,Y
|
||||
lda $7D00,Y
|
||||
sta $2D00,Y
|
||||
lda $7E00,Y
|
||||
sta $2E00,Y
|
||||
lda $7F00,Y
|
||||
sta $2F00,Y
|
||||
lda $8000,Y
|
||||
sta $3000,Y
|
||||
lda $8100,Y
|
||||
sta $3100,Y
|
||||
lda $8200,Y
|
||||
sta $3200,Y
|
||||
lda $8300,Y
|
||||
sta $3300,Y
|
||||
lda $8400,Y
|
||||
sta $3400,Y
|
||||
lda $8500,Y
|
||||
sta $3500,Y
|
||||
lda $8600,Y
|
||||
sta $3600,Y
|
||||
lda $8700,Y
|
||||
sta $3700,Y
|
||||
lda $8800,Y
|
||||
sta $3800,Y
|
||||
lda $8900,Y
|
||||
sta $3900,Y
|
||||
lda $8A00,Y
|
||||
sta $3A00,Y
|
||||
lda $8B00,Y
|
||||
sta $3B00,Y
|
||||
lda $8C00,Y
|
||||
sta $3C00,Y
|
||||
lda $8D00,Y
|
||||
sta $3D00,Y
|
||||
lda $8E00,Y
|
||||
sta $3E00,Y
|
||||
lda $8F00,Y
|
||||
sta $3F00,Y
|
||||
iny
|
||||
beq done_copy_to_aux_page1
|
||||
jmp copy_to_aux_page1_loop
|
||||
done_copy_to_aux_page1:
|
||||
sta WRMAIN
|
||||
rts
|
||||
|
||||
|
||||
copy_to_aux_page2:
|
||||
|
||||
ldy #0
|
||||
copy_to_aux_page2_loop:
|
||||
lda $7000,Y
|
||||
sta $4000,Y
|
||||
lda $7100,Y
|
||||
sta $4100,Y
|
||||
lda $7200,Y
|
||||
sta $4200,Y
|
||||
lda $7300,Y
|
||||
sta $4300,Y
|
||||
lda $7400,Y
|
||||
sta $4400,Y
|
||||
lda $7500,Y
|
||||
sta $4500,Y
|
||||
lda $7600,Y
|
||||
sta $4600,Y
|
||||
lda $7700,Y
|
||||
sta $4700,Y
|
||||
lda $7800,Y
|
||||
sta $4800,Y
|
||||
lda $7900,Y
|
||||
sta $4900,Y
|
||||
lda $7A00,Y
|
||||
sta $4A00,Y
|
||||
lda $7B00,Y
|
||||
sta $4B00,Y
|
||||
lda $7C00,Y
|
||||
sta $4C00,Y
|
||||
lda $7D00,Y
|
||||
sta $4D00,Y
|
||||
lda $7E00,Y
|
||||
sta $4E00,Y
|
||||
lda $7F00,Y
|
||||
sta $4F00,Y
|
||||
lda $8000,Y
|
||||
sta $5000,Y
|
||||
lda $8100,Y
|
||||
sta $5100,Y
|
||||
lda $8200,Y
|
||||
sta $5200,Y
|
||||
lda $8300,Y
|
||||
sta $5300,Y
|
||||
lda $8400,Y
|
||||
sta $5400,Y
|
||||
lda $8500,Y
|
||||
sta $5500,Y
|
||||
lda $8600,Y
|
||||
sta $5600,Y
|
||||
lda $8700,Y
|
||||
sta $5700,Y
|
||||
lda $8800,Y
|
||||
sta $5800,Y
|
||||
lda $8900,Y
|
||||
sta $5900,Y
|
||||
lda $8A00,Y
|
||||
sta $5A00,Y
|
||||
lda $8B00,Y
|
||||
sta $5B00,Y
|
||||
lda $8C00,Y
|
||||
sta $5C00,Y
|
||||
lda $8D00,Y
|
||||
sta $5D00,Y
|
||||
lda $8E00,Y
|
||||
sta $5E00,Y
|
||||
lda $8F00,Y
|
||||
sta $5F00,Y
|
||||
iny
|
||||
beq done_copy_to_aux_page2
|
||||
jmp copy_to_aux_page2_loop
|
||||
done_copy_to_aux_page2:
|
||||
sta WRMAIN
|
||||
rts
|
||||
|
@ -1,5 +1,3 @@
|
||||
;mod7_table = $1c00
|
||||
;div7_table = $1d00
|
||||
hposn_low = $1e00
|
||||
hposn_high = $1f00
|
||||
|
||||
|
@ -16,6 +16,7 @@ rewind2_start:
|
||||
;=====================
|
||||
|
||||
bit PAGE1
|
||||
bit KEYRESET
|
||||
|
||||
jsr hardware_detect
|
||||
|
||||
@ -47,9 +48,16 @@ rewind2_start:
|
||||
|
||||
jsr move_and_print_list
|
||||
|
||||
;===============================
|
||||
; pause at warning if not e/c/gs
|
||||
|
||||
lda APPLEII_MODEL
|
||||
cmp #'e'
|
||||
beq good_to_go
|
||||
cmp #'g'
|
||||
beq good_to_go
|
||||
cmp #'c'
|
||||
beq good_to_go
|
||||
|
||||
jsr wait_until_keypress
|
||||
|
||||
@ -61,18 +69,6 @@ good_to_go:
|
||||
;=========================================
|
||||
;=========================================
|
||||
|
||||
; bit SET_GR
|
||||
; bit LORES ; set lo-res
|
||||
; bit TEXTGR
|
||||
|
||||
|
||||
; lda #<load_message
|
||||
; sta OUTL
|
||||
; lda #>load_message
|
||||
; sta OUTH
|
||||
; jsr move_and_print
|
||||
|
||||
|
||||
;==================================
|
||||
; load music into the language card
|
||||
; into $D000 set 1
|
||||
@ -126,6 +122,18 @@ dont_enable_mc:
|
||||
|
||||
skip_all_checks:
|
||||
|
||||
;====================================
|
||||
;====================================
|
||||
; Clear DHGR PAGE1
|
||||
; MAIN:$2000 and AUX:$2000
|
||||
;====================================
|
||||
;====================================
|
||||
|
||||
jsr hgr_page1_clearscreen
|
||||
sta WRAUX ; writes to AUX memory
|
||||
jsr hgr_page1_clearscreen
|
||||
sta WRMAIN ; writes back to MAIN memory
|
||||
|
||||
.if 0
|
||||
|
||||
;====================================
|
||||
@ -182,7 +190,7 @@ load_program_loop:
|
||||
; load from disk
|
||||
|
||||
sei
|
||||
lda #PART_BEAR ; HEADPHONES
|
||||
lda #PART_BEAR ; Multi-color AHA tape intro
|
||||
sta WHICH_LOAD
|
||||
jsr load_file
|
||||
|
||||
@ -261,12 +269,16 @@ blah:
|
||||
jmp blah
|
||||
|
||||
|
||||
start_message:
|
||||
start_message: ;01234567890123456789012345678901234567890
|
||||
.byte 0,0,"LOADING REWIND2 PROOF OF CONCEPT",0
|
||||
.byte 0,1,"REQUIRES APPLE IIE/C/GS, 128K, MOCKINGBOARD",0
|
||||
.byte 0,1,"REQUIRES APPLE IIE, 128K, MOCKINGBOARD",0
|
||||
.byte 0,3,"SYSTEM DETECTED: APPLE II"
|
||||
message_type_offset:
|
||||
.byte " ",0
|
||||
.byte 0,10,"MUSIC BY QJETA",0
|
||||
.byte 0,12,"VISUALS BASED ON OPENING OF REWIND2",0
|
||||
.byte 0,13," ATARI XL DEMO",0
|
||||
.byte 0,14," BY NEW GENERATION, RADIANCE, ZELAX",0
|
||||
.byte $FF
|
||||
|
||||
load_message:
|
||||
|
@ -14,10 +14,19 @@ VBLANK = $C019 ;
|
||||
; TODO: patch this to a RTS on non-IIe systems
|
||||
|
||||
wait_vblank:
|
||||
; Assume Apple IIe
|
||||
; lda APPLEII_MODEL
|
||||
; cmp #'e'
|
||||
; bne no_vblank
|
||||
|
||||
lda APPLEII_MODEL
|
||||
|
||||
cmp #'e'
|
||||
beq wait_vblank_iie
|
||||
|
||||
cmp #'g'
|
||||
beq wait_vblank_iigs
|
||||
|
||||
; cmp #'c'
|
||||
; beq wait_vblank_iic
|
||||
|
||||
bne no_vblank
|
||||
|
||||
; 4cade does this, the opposite of the way were doing it originally
|
||||
|
||||
@ -33,16 +42,55 @@ wait_vblank_done_iie:
|
||||
lda VBLANK
|
||||
bmi wait_vblank_done_iie ; repeat until positive (start vblank)
|
||||
; in vblank
|
||||
no_vblank:
|
||||
|
||||
.if 0
|
||||
wait_vblank_iie:
|
||||
lda VBLANK
|
||||
bmi wait_vblank_iie ; wait for positive (in vblank)
|
||||
wait_vblank_done_iie:
|
||||
lda VBLANK ; wait for negative (vlank done)
|
||||
bpl wait_vblank_done_iie
|
||||
no_vblank:
|
||||
.endif
|
||||
|
||||
rts
|
||||
|
||||
wait_vblank_iigs:
|
||||
lda VBLANK
|
||||
bpl wait_vblank_iigs ; repeat until negative
|
||||
; not in vblank
|
||||
wait_vblank_done_iigs:
|
||||
lda VBLANK
|
||||
bmi wait_vblank_done_iigs ; repeat until positive (start vblank)
|
||||
; in vblank
|
||||
|
||||
rts
|
||||
|
||||
.if 0
|
||||
; NOTE: we don't support this as we have to handle interrupts
|
||||
; for music and we'd have to hack up the irq handler
|
||||
; to differentiate VBLANK from others
|
||||
|
||||
; alternate implementation by Oliver Schmidt
|
||||
; from https://github.com/cc65/cc65/blob/master/libsrc/apple2/waitvsync.s
|
||||
|
||||
wait_vblank_iic:
|
||||
; sei ; disables interrupts
|
||||
sta IOUDISOFF
|
||||
lda RDVBLMSK
|
||||
bit ENVBL
|
||||
bit PTRIG ; Reset VBL interrupt flag
|
||||
|
||||
wviim:
|
||||
bit RDVBLBAR
|
||||
bpl wviim
|
||||
|
||||
asl
|
||||
bcs wviip ; VBL interrupts were already enabled
|
||||
bit DISVBL
|
||||
wviip:
|
||||
sta IOUDISON ; IIc Tech Ref Man: The firmware normally leaves IOUDIS on.
|
||||
; cli ; re-enable interrupts
|
||||
|
||||
rts
|
||||
.endif
|
||||
|
||||
no_vblank:
|
||||
; pause a bit?
|
||||
|
||||
; lda #50
|
||||
; jsr wait
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
@ -144,7 +144,8 @@ MASKH = $EB
|
||||
;==============================================
|
||||
|
||||
; bear
|
||||
ODD = $EB
|
||||
AUXOUTL = $EA
|
||||
AUXOUTH = $EB
|
||||
MAIN1 = $EC
|
||||
AUX1 = $ED
|
||||
MAIN0 = $EE
|
||||
@ -160,6 +161,7 @@ COLORSD = $F7
|
||||
COLORSC = $F8
|
||||
COLORSB = $F9
|
||||
COLORSA = $FA
|
||||
ODD = $FB
|
||||
|
||||
; dancing
|
||||
DANCE_COUNT = $F0
|
||||
|
Loading…
x
Reference in New Issue
Block a user