Big "squashed" update to latest version of Framework.

- Bugfix: WaitForFrame was completely broken. Now also caters for race-condition that would have waited one extra frame.
- Bugfix: InitPart would overwrite innocent memory (reported by Gigabates and Losso)
- Bugfix: Palette LERP had wrong bias.
- Removed extra paths in include statement, use default include paths instead
- Added Raspberry Casket no-jitter background calc mode (FW_MUSIC_PLAYER_CHOICE = 6)
- Updated Raspberry Casket to V2.0 presto branch (WIP)
- Removed fw_FrameCounterLong, use fw_FrameCounter-2 for debug purposes
- Support for blue noise palette LERPing (like in Is Real). Provide your own blue noise table (4 KB), stuff it into fw_BlueNoiseTablePtr, set FW_PALETTE_LERP_SUPPORT to 2
- Music tick routine is now replaceable during runtime (fw_MusicTickRoutine)
- Support for softints and audio interrupts
- LMB exit can also be disabled dynamically when using FW_LMB_EXIT_SUPPORT = 2 and fw_DisableLMBExit != 0
- Added LSP Micro support and LSP Nano (custom format that uses note pitches instead of periods)
- Minor other things
This commit is contained in:
Chris Hodges 2024-09-15 17:43:33 +02:00
parent e84afd08e2
commit 9c48c11cd1
43 changed files with 3204 additions and 2567 deletions

View File

@ -93,7 +93,7 @@ DEBUG_DETAIL SET 10
NEWAGE_DEBUG = 1
include "../framework/framework.i"
include "framework.i"
; Chip memory use:
@ -341,7 +341,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -369,7 +369,7 @@ entrypoint:
CALLFW SetCopper
IF 1
PUTMSG 10,<"%d: Waiting for first pic (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Waiting for first pic (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
.wait
CALLFW VSyncWithTask
@ -382,7 +382,7 @@ entrypoint:
lea pd_SpeedCodeTask(a6),a1
CALLFW AddTask
PUTMSG 10,<"%d: Waiting for third pic (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Waiting for third pic (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
.wait2
CALLFW VSyncWithTask
@ -557,7 +557,7 @@ bln_init:
CALLFW TrackloaderDiskMotorOff
ENDC
PUTMSG 10,<"%d: Prep task done!">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Prep task done!">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
@ -812,7 +812,7 @@ bln_clear_clip_buffers:
;--------------------------------------------------------------------
bln_intro:
PUTMSG 10,<"%d: Intro (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Intro (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
CALLFW SetBlitterQueueSingleFrame
bsr bln_clear_db_buffers
@ -838,7 +838,7 @@ bln_intro:
bsr bln_handle_parts
move.w d7,pd_SequenceBlocksLeft(a6)
bne.s .noallownext
PUTMSG 30,<"%d: Sequence done! (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 30,<"%d: Sequence done! (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #3,pd_AllowLoadLastImage(a6)
.noallownext
@ -874,14 +874,14 @@ bln_intro:
cmp.w #2,pd_TCPicsDone(a6)
bge.s .nowait
PUTMSG 10,<"%d: Waiting for 2nd pic (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Waiting for 2nd pic (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
.wait
CALLFW VSyncWithTask
cmp.w #2,pd_TCPicsDone(a6)
blt.s .wait
.nowait
PUTMSG 10,<"%d: Intro B sequence (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Intro B sequence (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
lea bln_b_part_sequence(pc),a0
bsr bln_load_part_sequences
@ -890,7 +890,7 @@ bln_intro:
;--------------------------------------------------------------------
bln_bars:
PUTMSG 10,<"%d: Bars (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Bars (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
CALLFW SetBlitterQueueSingleFrame
@ -927,7 +927,7 @@ bln_bars:
;--------------------------------------------------------------------
bln_holes:
PUTMSG 10,<"%d: Holes (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Holes (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
CALLFW SetBlitterQueueSingleFrame
@ -959,7 +959,7 @@ bln_holes:
cmp.w #5040+32*6,fw_MusicFrameCount(a6)
blt.s .wait
PUTMSG 10,<"%d: Starting holes (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Starting holes (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
BLTWAIT
move.w fw_FrameCounter(a6),pd_OldFrameCount(a6)
@ -1026,7 +1026,7 @@ bln_holes:
rts
.loadgreetings
PUTMSG 10,<"%d: Allow Loading of Image 5 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Allow Loading of Image 5 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #5,pd_AllowLoadLastImage(a6)
lea pd_CirclePots(a6),a4
lea bln_circle_greetings_scripts(pc),a0
@ -1045,7 +1045,7 @@ bln_holes:
;--------------------------------------------------------------------
bln_greetings:
PUTMSG 10,<"%d: Greetings (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Greetings (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
IFD FW_DEMO_PART
lea .loader(pc),a0
@ -1084,7 +1084,7 @@ bln_greetings:
move.l pd_TrueColorImage2(a6),a0
move.l pd_EndLogoBuffer(a6),a1
CALLFW DecompressZX0
PUTMSG 10,<"%d: Endlogo loaded/decompressed (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Endlogo loaded/decompressed (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
rts
.endlogofile
@ -1219,7 +1219,7 @@ bln_update_copper_list_pointers:
;--------------------------------------------------------------------
bln_prepare_circle_speedcode:
PUTMSG 10,<"%d: Preparing circle smc">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Preparing circle smc">,fw_FrameCounter-2(a6)
lea bln_circleinfo,a4
move.l pd_CircleSpeedcodeBuffer(a6),a2
move.l a2,a3
@ -1273,7 +1273,7 @@ bln_prepare_circle_speedcode:
.done
suba.l pd_CircleSpeedcodeBuffer(a6),a2
add.l a2,a2
PUTMSG 10,<"%d: Done %ld bytes">,fw_FrameCounterLong(a6),a2
PUTMSG 10,<"%d: Done %ld bytes">,fw_FrameCounter-2(a6),a2
CALLFW FlushCaches
rts
@ -1679,7 +1679,7 @@ bln_fade_step_down:
;--------------------------------------------------------------------
bln_prepare_circle_masks:
PUTMSG 10,<"%d: Preparing circle masks">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Preparing circle masks">,fw_FrameCounter-2(a6)
bsr bln_clear_clip_buffers
BLTWAIT
@ -1759,7 +1759,7 @@ bln_prepare_circle_masks:
bra.s .rloop
.done suba.l pd_CircleMasksBuffer(a6),a3
PUTMSG 10,<"%d: Done %ld bytes">,fw_FrameCounterLong(a6),a3
PUTMSG 10,<"%d: Done %ld bytes">,fw_FrameCounter-2(a6),a3
rts
;--------------------------------------------------------------------
@ -5003,7 +5003,7 @@ bln_greeting_line_update:
bra.s bln_update_circle_pot_info
.noupdate
rts
.kill PUTMSG 10,<"%d: Greeting killed (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
.kill PUTMSG 10,<"%d: Greeting killed (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
subq.w #1,pd_GreetingCount(a6)
moveq.l #0,d0
move.w d0,cp_Radius(a4)
@ -5017,7 +5017,7 @@ bln_load_circle_nop:
rts
bln_load_circle_eye_1:
PUTMSG 10,<"%d: Load circle eye 1 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load circle eye 1 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #112,cp_CenterPosX(a4)
move.w #51,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5043,7 +5043,7 @@ bln_load_circle_eye_1:
rts
bln_load_circle_pos_eye_1_sunset:
PUTMSG 10,<"%d: Load circle eye sunset 2 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load circle eye sunset 2 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #112,cp_CenterPosX(a4)
move.w #62,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5070,7 +5070,7 @@ bln_load_circle_pos_eye_1_sunset:
rts
bln_load_circle_pos_eye_2:
PUTMSG 10,<"%d: Load circle eye 2 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load circle eye 2 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #240,cp_CenterPosX(a4)
move.w #126,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5096,7 +5096,7 @@ bln_load_circle_pos_eye_2:
rts
bln_load_circle_pos_eye_2_skin:
PUTMSG 10,<"%d: Load circle eye skin (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load circle eye skin (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #240,cp_CenterPosX(a4)
move.w #117,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5123,7 +5123,7 @@ bln_load_circle_pos_eye_2_skin:
rts
bln_load_circle_cham_bg_1:
PUTMSG 10,<"%d: Load cham bg 1 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load cham bg 1 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #272,cp_CenterPosX(a4)
move.w #34,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5149,7 +5149,7 @@ bln_load_circle_cham_bg_1:
rts
bln_load_circle_greets_bg_1:
PUTMSG 10,<"%d: Load greets bg 1 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load greets bg 1 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #176,cp_CenterPosX(a4)
move.w #75,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5176,7 +5176,7 @@ bln_load_circle_greets_bg_1:
bln_load_circle_greets_bg_2:
PUTMSG 10,<"%d: Load greets bg 2 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load greets bg 2 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #128,cp_CenterPosX(a4)
move.w #149,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5202,7 +5202,7 @@ bln_load_circle_greets_bg_2:
rts
bln_load_circle_greets_bg_3:
PUTMSG 10,<"%d: Load greets bg 3 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load greets bg 3 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #80,cp_CenterPosX(a4)
move.w #32,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5228,7 +5228,7 @@ bln_load_circle_greets_bg_3:
rts
bln_load_circle_greets_bg_4:
PUTMSG 10,<"%d: Load greets bg 4 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load greets bg 4 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #208,cp_CenterPosX(a4)
move.w #28,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5254,7 +5254,7 @@ bln_load_circle_greets_bg_4:
rts
bln_load_circle_greets_bg_5:
PUTMSG 10,<"%d: Load greets bg 5 (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Load greets bg 5 (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #48,cp_CenterPosX(a4)
move.w #118,cp_CenterPosY(a4)
moveq.l #0,d0
@ -5289,7 +5289,7 @@ bln_load_next_greeting:
beq.s .reallykill
move.w (a0)+,d1
move.w (a0)+,d2
PUTMSG 10,<"%d: Next greeting at %d,%d Pair: %d">,fw_FrameCounterLong(a6),d0,d1,d2
PUTMSG 10,<"%d: Next greeting at %d,%d Pair: %d">,fw_FrameCounter-2(a6),d0,d1,d2
move.w d0,cp_CenterPosX(a4)
move.w d1,cp_CenterPosY(a4)
move.w d2,cp_Pair(a4)
@ -5303,7 +5303,7 @@ bln_load_next_greeting:
.retry
move.l pd_GreetingLinePtr(a6),a0
movem.w (a0)+,d0-d4
PUTMSG 10,<"%d: Greeting from %d,%d to %d,%d, shift %d">,fw_FrameCounterLong(a6),d0,d1,d2,d3,d4
PUTMSG 10,<"%d: Greeting from %d,%d to %d,%d, shift %d">,fw_FrameCounter-2(a6),d0,d1,d2,d3,d4
move.w d0,cp_FgRelPosX(a4)
beq.s .kill
@ -5359,21 +5359,21 @@ bln_load_next_greeting:
;--------------------------------------------------------------------
bln_reverse_big_circle_to_backward:
PUTMSG 10,<"%d: Reversing big circle (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Reversing big circle (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.l #bln_big_circle_rad_backward_update,cp_FrameRoutine(a4)
rts
;--------------------------------------------------------------------
bln_reverse_smaller_circle_to_backward:
PUTMSG 10,<"%d: Reversing smaller circle (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Reversing smaller circle (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.l #bln_smaller_circle_rad_backward_update,cp_FrameRoutine(a4)
rts
;--------------------------------------------------------------------
bln_reverse_small_circle_to_backward:
PUTMSG 10,<"%d: Reversing smaller circle (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Reversing smaller circle (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.l #bln_small_circle_rad_backward_update,cp_FrameRoutine(a4)
rts
@ -5598,13 +5598,13 @@ bln_circle_greet6_script:
dc.w $000 ; is required for true color image decoding
bln_images_palette:
include "../data/blend/fiveimg_ham.pal.asm"
include "data/blend/fiveimg_ham.pal.asm"
bln_leaves_tc_10:
incbin "../data/blend/leavestc_10.raw"
incbin "data/blend/leavestc_10.raw"
bln_endlogo_palette:
include "../data/blend/PLT_DSRLogo01c_ham.pal.asm"
include "data/blend/PLT_DSRLogo01c_ham.pal.asm"
dc.l 0
bln_circlerads:
@ -5718,32 +5718,32 @@ bln_circleinfo:
dc.w 0
bln_andyou_image:
incbin "../data/blend/andyou_128x92x2.BPL"
incbin "data/blend/andyou_128x92x2.BPL"
bln_blend_image_1:
incbin "../data/blend/fiveimg1_ham.raw"
incbin "data/blend/fiveimg1_ham.raw"
IFND FW_DEMO_PART
section "bln_cat",data,chip
bln_blend_image_2:
incbin "../data/blend/fiveimg2_ham.raw"
incbin "data/blend/fiveimg2_ham.raw"
bln_blend_image_3:
incbin "../data/blend/fiveimg3_ham.raw"
incbin "data/blend/fiveimg3_ham.raw"
bln_blend_image_4:
incbin "../data/blend/fiveimg4_ham.raw"
incbin "data/blend/fiveimg4_ham.raw"
bln_blend_image_5:
incbin "../data/blend/fiveimg5_ham.raw"
incbin "data/blend/fiveimg5_ham.raw"
bln_endlogo_image:
incbin "../data/blend/PLT_DSRLogo01c_ham.raw"
incbin "data/blend/PLT_DSRLogo01c_ham.raw"
IFD ENABLE_PART_MUSIC
section "part_music_samples",data,chip ; section for music playback
part_music_smp:
incbin "../data/music/dsr_68k_tune_2_v11.lsbank"
incbin "data/music/dsr_68k_tune_2_v11.lsbank"
section "part_music_data",data ; section for music playback
part_music_data:
incbin "../data/music/dsr_68k_tune_2_v11.lsmusic"
incbin "data/music/dsr_68k_tune_2_v11.lsmusic"
ENDC
ENDC
END

View File

@ -95,7 +95,7 @@ DEBUG_DETAIL SET 10
NEWAGE_DEBUG = 1
include "../framework/framework.i"
include "framework.i"
; Memory use:
@ -236,7 +236,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -442,7 +442,7 @@ blb_init_colors:
blb_init_shade_table:
move.l pd_ShadeTableXor(a6),a0
PUTMSG 10,<"%d: Init Shade Table %p">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: Init Shade Table %p">,fw_FrameCounter-2(a6),a0
move.l a0,a1
moveq.l #0,d0
.xorloop
@ -519,7 +519,7 @@ blb_main:
CALLFW SetBlitterQueueMultiFrame
move.w #-1,pd_CurrBlitSize(a6)
PUTMSG 10,<"%d: Main!">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Main!">,fw_FrameCounter-2(a6)
lea .vblstuff(pc),a0
move.l a0,fw_VBlankIRQ(a6)
@ -531,7 +531,7 @@ blb_main:
CALLFW VSyncWithTask
PUTMSG 10,<"%d: Main 2">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Main 2">,fw_FrameCounter-2(a6)
bsr blb_flip_db_frame
bsr blb_create_bulb_copperlist
bsr blb_patch_in_text_sprites_to_copperlist
@ -601,14 +601,14 @@ blb_main:
.nowrapbqwrite
cmp.l pd_BqDataReadPtr(a6),a1
bne.s .nowait
PUTMSG 40,<"%d: Waiting for space Read: %p Write: %p">,fw_FrameCounterLong(a6),pd_BqDataReadPtr(a6),pd_BqDataWritePtr(a6)
PUTMSG 40,<"%d: Waiting for space Read: %p Write: %p">,fw_FrameCounter-2(a6),pd_BqDataReadPtr(a6),pd_BqDataWritePtr(a6)
CALLFW JoinBlitterQueue
CALLFW VSyncWithTask
bra.s .waitforbqspaceloop
.nowait
move.l a1,pd_BqDataWritePtr(a6)
move.l a2,pd_CurrLineColorsPtr(a6)
PUTMSG 40,<"%d: Done a frame Read: %p Write: %p">,fw_FrameCounterLong(a6),pd_BqDataReadPtr(a6),pd_BqDataWritePtr(a6)
PUTMSG 40,<"%d: Done a frame Read: %p Write: %p">,fw_FrameCounter-2(a6),pd_BqDataReadPtr(a6),pd_BqDataWritePtr(a6)
subq.w #1,pd_PartCountDown(a6)
bne .loop
@ -659,17 +659,17 @@ blb_main:
tst.w pd_NextQueueTriggerFrame(a6)
beq.s .nodrop
subq.w #1,pd_LampFrameNum(a6)
PUTMSG 10,<"%d: Framedrop %d vs %d!">,fw_FrameCounterLong(a6),pd_NextQueueTriggerFrame-2(a6),d0
PUTMSG 10,<"%d: Framedrop %d vs %d!">,fw_FrameCounter-2(a6),pd_NextQueueTriggerFrame-2(a6),d0
.nodrop
addq.w #2,d0
move.w d0,pd_NextQueueTriggerFrame(a6)
PUTMSG 20,<"%d: Triggering queue %p">,fw_FrameCounterLong(a6),a0
PUTMSG 20,<"%d: Triggering queue %p">,fw_FrameCounter-2(a6),a0
move.w -4(a0),pd_CurrBlitSize(a6)
BLTWAIT
CALLFW TriggerCustomBlitterQueue
rts
.nop
PUTMSG 20,<"%d: Ignoring">,fw_FrameCounterLong(a6)
PUTMSG 20,<"%d: Ignoring">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
@ -683,7 +683,7 @@ blb_brighten:
lea pd_LampPalette(a6),a1
CALLFW FadePaletteTo
PUTMSG 10,<"%d: Brighten!">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Brighten!">,fw_FrameCounter-2(a6)
move.w #SWING_FRAMES*4,pd_SwingFrameNum(a6)
move.w #PAINT_FRAMES*4,pd_PaintFrameNum(a6)
@ -749,14 +749,14 @@ blb_brighten:
.nowrapbqwrite
cmp.l pd_BqDataReadPtr(a6),a1
bne.s .nowait
PUTMSG 40,<"%d: Waiting for space Read: %p Write: %p">,fw_FrameCounterLong(a6),pd_BqDataReadPtr(a6),pd_BqDataWritePtr(a6)
PUTMSG 40,<"%d: Waiting for space Read: %p Write: %p">,fw_FrameCounter-2(a6),pd_BqDataReadPtr(a6),pd_BqDataWritePtr(a6)
CALLFW JoinBlitterQueue
CALLFW VSyncWithTask
bra.s .waitforbqspaceloop
.nowait
move.l a1,pd_BqDataWritePtr(a6)
move.l a2,pd_CurrLineColorsPtr(a6)
PUTMSG 40,<"%d: Done a frame Read: %p Write: %p">,fw_FrameCounterLong(a6),pd_BqDataReadPtr(a6),pd_BqDataWritePtr(a6)
PUTMSG 40,<"%d: Done a frame Read: %p Write: %p">,fw_FrameCounter-2(a6),pd_BqDataReadPtr(a6),pd_BqDataWritePtr(a6)
subq.w #1,pd_PartCountDown(a6)
bne .loop
@ -3269,13 +3269,13 @@ blb_do_lamp_rotations:
moveq.l #-NUM_LAMP_ROTATIONS/2,d1
.loop
PUTMSG 40,<"%d: Rotation %d to %p">,fw_FrameCounterLong(a6),d1,a4
PUTMSG 40,<"%d: Rotation %d to %p">,fw_FrameCounter-2(a6),d1,a4
PUSHM d1/d7
bsr blb_calc_sheers
bsr blb_rotate_chunky
PUTMSG 40,<"%d: C2P">,fw_FrameCounterLong(a6)
PUTMSG 40,<"%d: C2P">,fw_FrameCounter-2(a6)
lea pd_LampSprites(a6),a3
REPT 3
move.l a4,a1
@ -3503,10 +3503,10 @@ blb_text_panels:
dc.l 0
blb_lamp_palette:
incbin "../data/bulb/lamp_64x32x16.PAL"
incbin "data/bulb/lamp_64x32x16.PAL"
blb_lamp_off_palette:
incbin "../data/bulb/lamp_off_64x32x16.PAL"
incbin "data/bulb/lamp_off_64x32x16.PAL"
blb_lamp_white_palette:
REPT 15
@ -3530,7 +3530,7 @@ blb_lamp_angle_table:
include "langletable.asm"
blb_lamp_chunky:
incbin "../data/bulb/lamp_48x32x16.chk"
incbin "data/bulb/lamp_48x32x16.chk"
section "blb_anim",data
@ -3596,25 +3596,25 @@ blb_extra_copperlist_ptr:
COP_END
blb_bulb_pic:
incbin "../data/bulb/PLT_Lampscene_ham.raw"
incbin "data/bulb/PLT_Lampscene_ham.raw"
blb_text_1_data:
;blk.b 2560,255
incbin "../data/bulb/text1.BPL"
incbin "data/bulb/text1.BPL"
blb_text_2_data:
;blk.b 2560,255
incbin "../data/bulb/text2.BPL"
incbin "data/bulb/text2.BPL"
blb_text_3_data:
;blk.b 2560,255
incbin "../data/bulb/text3.BPL"
incbin "data/bulb/text3.BPL"
blb_text_4_data:
;blk.b 2560,255
incbin "../data/bulb/text4.BPL"
incbin "data/bulb/text4.BPL"
blb_text_5_data:
;blk.b 2560,255
incbin "../data/bulb/text5.BPL"
incbin "data/bulb/text5.BPL"
END

View File

@ -75,7 +75,7 @@ DEBUG_DETAIL SET 10
NEWAGE_DEBUG = 1
include "../framework/framework.i"
include "framework.i"
; Memory use:
@ -115,7 +115,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -420,7 +420,7 @@ enp_write_textline:
.nextline
PUTMSG 40,<"%d: NL">,fw_FrameCounterLong(a6)
PUTMSG 40,<"%d: NL">,fw_FrameCounter-2(a6)
move.l pd_TextLinePtr(a6),a0
.retrychar
tst.b (a0)
@ -1058,20 +1058,20 @@ enp_extra_copperlist_ptr:
COP_END
enp_font_data:
incbin "../data/endpart/PJZ_font_8x16x4.BPL"
incbin "data/endpart/PJZ_font_8x16x4.BPL"
IFND FW_DEMO_PART
IFD ENABLE_PART_MUSIC
section "part_music_samples",data,chip ; section for music playback
part_music_smp:
incbin "../data/music/desire_68k_tune3_v2.lsbank"
incbin "data/music/desire_68k_tune3_v2.lsbank"
section "part_music_data",data ; section for music playback
part_music_data:
incbin "../data/music/desire_68k_tune3_v2.lsmusic"
incbin "data/music/desire_68k_tune3_v2.lsmusic"
ENDC
section "enp_screenshots",data,chip
enp_screenshots:
ds.b ((SCREENSHOTS_WIDTH/8)*ENDP_HEIGHT)*SCREENSHOTS_PLANES
incbin "../data/endpart/screenshots_320x1620.BPL"
incbin "data/endpart/screenshots_320x1620.BPL"
ENDC
END

View File

@ -2,92 +2,92 @@
; link all parts together depending on the settings
include "../framework/framework.i"
include "framework.i"
IF FW_STANDALONE_FILE_MODE
include "../framework/os_startupcode.asm"
include "os_startupcode.asm"
ELSE
include "../framework/trackmo_startupcode.asm"
include "trackmo_startupcode.asm"
ENDC
include "../framework/framework_misc.asm"
include "framework_misc.asm"
IF FW_MULTITASKING_SUPPORT
include "../framework/framework_tasks.asm"
include "framework_tasks.asm"
ENDC
IF FW_BLITTERQUEUE_SUPPORT
include "../framework/framework_blitterqueue.asm"
include "framework_blitterqueue.asm"
ENDC
IF FW_DYNAMIC_MEMORY_SUPPORT
include "../framework/framework_memory.asm"
include "framework_memory.asm"
ENDC
IF FW_MUSIC_SUPPORT
include "../framework/framework_music.asm"
include "framework_music.asm"
ENDC
IF FW_MULTIPART_SUPPORT
include "../framework/framework_multipart.asm"
include "framework_multipart.asm"
ENDC
IF FW_SINETABLE_SUPPORT
include "../framework/framework_sinetable.asm"
include "framework_sinetable.asm"
ENDC
IF FW_SCRIPTING_SUPPORT
include "../framework/framework_scripting.asm"
include "framework_scripting.asm"
ENDC
IF FW_PALETTE_LERP_SUPPORT
include "../framework/framework_palettelerp.asm"
include "framework_palettelerp.asm"
ENDC
IFEQ FW_STANDALONE_FILE_MODE
include "../framework/framework_trackloader.asm"
include "../framework/framework_dos.asm"
include "framework_trackloader.asm"
include "framework_dos.asm"
ELSE
IF FW_HD_TRACKMO_MODE
include "../framework/framework_hdloader.asm"
include "../framework/framework_dos.asm"
include "framework_hdloader.asm"
include "framework_dos.asm"
ENDC
ENDC
IF FW_MUSIC_SUPPORT
IFNE FW_MUSIC_PLAYER_CHOICE==0
include "../framework/musicplayers/player_none.asm"
include "musicplayers/player_none.asm"
ENDC
IFNE FW_MUSIC_PLAYER_CHOICE==1
include "../framework/musicplayers/player_lsp_vbl.asm"
include "musicplayers/player_lsp_vbl.asm"
ENDC
IFNE FW_MUSIC_PLAYER_CHOICE==2
include "../framework/musicplayers/player_lsp_cia.asm"
include "musicplayers/player_lsp_cia.asm"
ENDC
IFNE FW_MUSIC_PLAYER_CHOICE==3
fail "Sorry, P61 not ported to this framework (yet). Use LSP instead."
ENDC
IFNE (FW_MUSIC_PLAYER_CHOICE==4)|(FW_MUSIC_PLAYER_CHOICE==5)
;include "../framework/musicplayers/player_pretracker_std.asm"
include "../framework/musicplayers/player_raspberry_casket.asm"
IFNE (FW_MUSIC_PLAYER_CHOICE>=4)&&(FW_MUSIC_PLAYER_CHOICE<=6)
;include "musicplayers/player_pretracker_std.asm"
include "musicplayers/player_raspberry_casket.asm"
ENDC
ENDC
IF FW_LZ4_SUPPORT
fw_DecompressLZ4:
include "../framework/unpackers/lz4_normal.asm"
include "unpackers/lz4_normal.asm"
ENDC
IF FW_ZX0_SUPPORT
fw_DecompressZX0:
;include "../framework/unpackers/zx0.asm"
include "../framework/unpackers/zx0_faster.asm"
;include "unpackers/zx0.asm"
include "unpackers/zx0_faster.asm"
ENDC
IF FW_DOYNAX_SUPPORT
fw_DecompressDoynax:
include "../framework/unpackers/doynax.asm"
include "unpackers/doynax.asm"
ENDC
include "../framework/framework_chip_section.asm"
include "framework_chip_section.asm"
IF FW_STANDALONE_FILE_MODE
; framework structure is allocated from RAM and pointer is placed here

View File

@ -1,24 +1,24 @@
IFND FRAMEWORK_I
FRAMEWORK_I SET 1
include "../includes/hardware/custom.i"
include "../includes/hardware/copper.i"
include "../includes/hardware/cia.i"
include "../includes/hardware/intbits.i"
include "../includes/hardware/dmabits.i"
include "../includes/hardware/adkbits.i"
include "../includes/hardware/blitbits.i"
include "../includes/exec/types.i"
include "../includes/exec/nodes.i"
include "../includes/exec/lists.i"
include "../includes/exec/macros.i"
include "../includes/exec/execbase.i"
include "../includes/dos/doshunks.i"
include "../includes/lvo/lvo.i"
include "../framework/framework_macros.i"
include "hardware/custom.i"
include "hardware/copper.i"
include "hardware/cia.i"
include "hardware/intbits.i"
include "hardware/dmabits.i"
include "hardware/adkbits.i"
include "hardware/blitbits.i"
include "exec/types.i"
include "exec/nodes.i"
include "exec/lists.i"
include "exec/macros.i"
include "exec/execbase.i"
include "dos/doshunks.i"
include "lvo/lvo.i"
include "framework_macros.i"
FWGENLVOTABLE SET 0
include "../framework/framework_lvos.i"
include "framework_lvos.i"
; error color codes
ERROR_OUTOFMEMORY = $0f00 ; one of the memory stacks ran out of memory
@ -60,6 +60,10 @@ DEFF_DELTA32 = (3<<DEFS_DELTAMODE) ; not implemented
DEFB_IN_PLACE = 11
DEFF_IN_PLACE = (1<<DEFB_IN_PLACE)
IFND FW_SOFT_IRQ_SUPPORT
FW_SOFT_IRQ_SUPPORT = 0
ENDC
IF (FW_STANDALONE_FILE_MODE==0)|FW_HD_TRACKMO_MODE
FW_DIRECTORY_ENTRIES_OFFSET = 512
@ -124,7 +128,6 @@ FW_DIRECTORY_ENTRIES_OFFSET = 512
ENDC
STRUCTURE FrameWork,0
UWORD fw_FrameCounterLong
UWORD fw_FrameCounter
APTR fw_PartFwBase
@ -155,6 +158,7 @@ FW_DIRECTORY_ENTRIES_OFFSET = 512
APTR fw_VBR
APTR fw_DemoAbortStackPointer
BOOL fw_AgaChipset
BOOL fw_DisableLMBExit
IF FW_STANDALONE_FILE_MODE
APTR fw_OrigBaseMemAllocAddr
ULONG fw_OrigBaseMemAllocLength
@ -168,6 +172,12 @@ FW_DIRECTORY_ENTRIES_OFFSET = 512
APTR fw_GfxBase
STRUCT fw_OldControls,2*4 ; intena, intreq, dmacon, adkcon
APTR fw_OldSystemVBlankIRQ
IF FW_SOFT_IRQ_SUPPORT
APTR fw_OldSystemSoftIRQ
ENDC
IF FW_AUDIO_IRQ_SUPPORT
APTR fw_OldSystemAudioIRQ
ENDC
APTR fw_OldCiaIRQ
APTR fw_CiaBResource
STRUCT fw_SysFriendlyInterrupt,IS_SIZE
@ -214,6 +224,12 @@ FW_DIRECTORY_ENTRIES_OFFSET = 512
IF FW_COPPER_IRQ_SUPPORT
APTR fw_CopperIRQ
ENDC
IF FW_SOFT_IRQ_SUPPORT
APTR fw_SoftIRQ
ENDC
IF FW_AUDIO_IRQ_SUPPORT
APTR fw_AudioIRQ
ENDC
IF FW_MULTITASKING_SUPPORT
STRUCT fw_Tasks,MLH_SIZE
UWORD fw_MainCurrentFrame
@ -224,6 +240,11 @@ FW_DIRECTORY_ENTRIES_OFFSET = 512
APTR fw_BackgroundTaskUSP
ENDC
IFEQ FW_PALETTE_LERP_SUPPORT-2
APTR fw_BlueNoiseTablePtr
UWORD fw_BlueNoisePos
ENDC
IF FW_BLITTERQUEUE_SUPPORT
APTR fw_BlitterQueueIRQ
APTR fw_BlitterQueueWritePtr ; don't change order
@ -255,7 +276,7 @@ FW_DIRECTORY_ENTRIES_OFFSET = 512
ENDC
IF FW_MUSIC_SUPPORT
BOOL fw_MusicEnabled
APTR fw_MusicTickRoutine
APTR fw_MusicData
APTR fw_MusicSamples
@ -289,12 +310,21 @@ FW_DIRECTORY_ENTRIES_OFFSET = 512
ENDC
ENDC
IF (FW_MUSIC_PLAYER_CHOICE==4)||(FW_MUSIC_PLAYER_CHOICE==5)
IF (FW_MUSIC_PLAYER_CHOICE>=4)&&(FW_MUSIC_PLAYER_CHOICE<=6)
APTR fw_PretrackerMyPlayer
APTR fw_PretrackerMySong
ULONG fw_PretrackerProgress
IF (FW_MUSIC_PLAYER_CHOICE>=5)
APTR fw_PretrackerCopperlist
ENDC
IF (FW_MUSIC_PLAYER_CHOICE==6)
APTR fw_PretrackerBgTask
APTR fw_PretrackerCopperlistStart
APTR fw_PretrackerCopperlistEnd
APTR fw_PretrackerCopperReadPtr
APTR fw_PretrackerCopperWritePtr
ENDC
ENDC
ENDC
IFD gbd_SIZEOF

View File

@ -17,7 +17,7 @@
; Trashes: probably all registers
;
fw_ExecuteNextPart:
PUTMSG 10,<10,"%d: *** Preparing to execute next part %s ***">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<10,"%d: *** Preparing to execute next part %s ***">,fw_FrameCounter-2(a6),a0
bsr.s fw_LoadNextPart
PUSHM a0
@ -25,15 +25,15 @@ fw_ExecuteNextPart:
POPM
IF FW_MUSIC_SUPPORT
PUTMSG 10,<"%d: *** Executing next part %p at music frame %d">,fw_FrameCounterLong(a6),a0,fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: *** Executing next part %p at music frame %d">,fw_FrameCounter-2(a6),a0,fw_MusicFrameCount-2(a6)
ELSE
PUTMSG 10,<"%d: *** Executing next part %p">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: *** Executing next part %p">,fw_FrameCounter-2(a6),a0
ENDC
jsr (a0)
IF FW_MUSIC_SUPPORT
PUTMSG 10,<"%d: *** Part finished at music frame %d",10>,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: *** Part finished at music frame %d",10>,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
ELSE
PUTMSG 10,<"%d: *** Part finished",10>,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: *** Part finished",10>,fw_FrameCounter-2(a6)
ENDC
bsr fw_RestoreFrameworkBase
@ -57,7 +57,7 @@ fw_ExecuteNextPart:
; Trashes: probably all registers
;
fw_LoadNextPart:
PUTMSG 10,<10,"%d: *** Loading next part %s ***">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<10,"%d: *** Loading next part %s ***">,fw_FrameCounter-2(a6),a0
clr.l fw_LastLoadedPart(a6)
bsr fw_DropCurrentMemoryAllocations
bsr fw_FindFile
@ -75,7 +75,7 @@ fw_LoadNextPart:
fw_WaitForPartLoaded:
tst.l fw_LastLoadedPart(a6)
bne.s .done
PUTMSG 10,<"%d: Part not yet fully loaded. Waiting.">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Part not yet fully loaded. Waiting.">,fw_FrameCounter-2(a6)
.loop bsr fw_Yield
tst.l fw_LastLoadedPart(a6)
beq.s .loop
@ -89,7 +89,7 @@ fw_WaitForPartLoaded:
; just before ExecuteNextPart starts the part after loading/decrunching.
;
; Hooks can be installed by writing fw_PrePartLaunchHook(a6).
; If this field is NULL, this function does nothing.
; If this field is NULL, this function does nothing.
; fw_PrePartLaunchHook(a6) is cleared prior to executing the hook.
;
fw_CheckPrePartLaunchHook:
@ -251,7 +251,7 @@ fw_LoadFile:
; a1 = Dir entry structure of the file
;
fw_LoadPlainFileEntry:
PUTMSG 10,<"%d: Loading plain file from offset %ld, size %ld">,fw_FrameCounterLong(a6),de_DiskOffset(a1),de_DiskLength(a1)
PUTMSG 10,<"%d: Loading plain file from offset %ld, size %ld">,fw_FrameCounter-2(a6),de_DiskOffset(a1),de_DiskLength(a1)
tst.b de_Flags+1(a1)
bpl.s fw_LoadPlainFileEntryToFast
move.l de_DiskLength(a1),d0
@ -420,8 +420,8 @@ fw_LoadAndInPlaceDecrunchToBuffer:
;
; In : a0 = source buffer
; a1 = Dir entry structure
; a2 = target buffer
; Out: a0 = END of the buffer written
; a2 = target buffer
; Out: a0 = END of the buffer written
; a1 = Dir entry structure
;
fw_DecrunchToBuffer:
@ -431,7 +431,7 @@ fw_DecrunchToBuffer:
IF FW_DOYNAX_SUPPORT
cmp.w #DEFF_DOYNAX,d0
bne.s .nodoynax
PUTMSG 10,<"%d: DoynaxDecrunch from %p (%ld) to %p (%ld)">,fw_FrameCounterLong(a6),a0,de_DiskLength(a1),a2,de_MemorySize(a1)
PUTMSG 10,<"%d: DoynaxDecrunch from %p (%ld) to %p (%ld)">,fw_FrameCounter-2(a6),a0,de_DiskLength(a1),a2,de_MemorySize(a1)
move.l a2,a1
bsr doynaxdepack
bra .decdone
@ -441,7 +441,7 @@ fw_DecrunchToBuffer:
IF FW_ZX0_SUPPORT
cmp.w #DEFF_ZX0,d0
bne.s .nozx0
PUTMSG 10,<"%d: ZX0Decrunch from %p (%ld) to %p (%ld)">,fw_FrameCounterLong(a6),a0,de_DiskLength(a1),a2,de_MemorySize(a1)
PUTMSG 10,<"%d: ZX0Decrunch from %p (%ld) to %p (%ld)">,fw_FrameCounter-2(a6),a0,de_DiskLength(a1),a2,de_MemorySize(a1)
move.l a2,a1
bsr zx0_decompress
bra.s .decdone
@ -452,7 +452,7 @@ fw_DecrunchToBuffer:
cmp.w #DEFF_LZ4,d0
bne.s .nolz4
move.l de_DiskLength(a1),d0
PUTMSG 10,<"%d: LZ4Decrunch from %p (%ld) to %p (%ld)">,fw_FrameCounterLong(a6),a0,d0,a2,de_MemorySize(a1)
PUTMSG 10,<"%d: LZ4Decrunch from %p (%ld) to %p (%ld)">,fw_FrameCounter-2(a6),a0,d0,a2,de_MemorySize(a1)
move.l a2,a1
bsr lz4_depack
bra.s .decdone
@ -477,7 +477,7 @@ fw_DecrunchToBuffer:
PUSHM a2
move.l de_MemorySize(a1),d0
beq.s .d8done
PUTMSG 10,<"%d: Delta8 decoding %p %ld bytes">,fw_FrameCounterLong(a6),a2,d0
PUTMSG 10,<"%d: Delta8 decoding %p %ld bytes">,fw_FrameCounter-2(a6),a2,d0
moveq.l #0,d1
subq.l #1,d0
.d8loop
@ -492,7 +492,7 @@ fw_DecrunchToBuffer:
.d8done
POPM
.nodelta
PUTMSG 10,<"%d: Decrunching done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Decrunching done">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
@ -505,7 +505,7 @@ fw_LoadFileToBuffer:
PUSHM a0-a3
move.l de_DiskOffset(a1),d0
move.l de_DiskLength(a1),d1
PUTMSG 10,<"%d: Loading file %p to buffer %p (%ld)">,fw_FrameCounterLong(a6),a1,a0,d1
PUTMSG 10,<"%d: Loading file %p to buffer %p (%ld)">,fw_FrameCounter-2(a6),a1,a0,d1
bsr fw_TrackloaderLoad
POPM
rts
@ -521,7 +521,7 @@ fw_LoadFileToBuffer:
; Out: a1 = end of decrunching pointer
;
fw_TrackmoLoadAndDecrunchToBuffer:
PUTMSG 10,<"%d: Trackmo Loading and Decrunching %p">,fw_FrameCounterLong(a6),a1
PUTMSG 10,<"%d: Trackmo Loading and Decrunching %p">,fw_FrameCounter-2(a6),a1
move.w #DEFM_PACKMODE,d0
and.w de_Flags(a1),d0
IF FW_TRACKMO_LZ4_SUPPORT|FW_TRACKMO_LZ4_DLT8_SUPPORT
@ -550,7 +550,7 @@ fw_TrackmoLoadAndDecrunchToBuffer:
;--------------------------------------------------------------------
; Load and decrunch a part
;
; Reads, allocates, decrunches and relocates all hunks for the given
; Reads, allocates, decrunches and relocates all hunks for the given
; directory entry.
;
; In : a1 = Dir entry structure
@ -558,7 +558,7 @@ fw_TrackmoLoadAndDecrunchToBuffer:
;
fw_LoadAndDecrunchPart:
move.l d7,-(sp)
PUTMSG 10,<"%d: Loading and Decrunching %p">,fw_FrameCounterLong(a6),a1
PUTMSG 10,<"%d: Loading and Decrunching %p">,fw_FrameCounter-2(a6),a1
tst.b de_NumHunks(a1)
bne.s .cont
@ -674,7 +674,7 @@ fw_LoadAndDecrunchPart:
IF FW_ZX0_SUPPORT
.inplacedecrunch
PUTMSG 10,<"%d: In-place loading and decrunching %ld bytes to %p (%d)">,fw_FrameCounterLong(a6),de_DiskLength(a1),a0,d7
PUTMSG 10,<"%d: In-place loading and decrunching %ld bytes to %p (%d)">,fw_FrameCounter-2(a6),de_DiskLength(a1),a0,d7
PUSHM a1-a3
move.l (a3,d7.w),a0
bsr fw_LoadAndInPlaceDecrunchToBuffer
@ -686,7 +686,7 @@ fw_LoadAndDecrunchPart:
.trackloadlz4
move.l (a3,d7.w),a0
PUSHM a1-a3
PUTMSG 10,<"%d: LZ4 loading and decrunching %ld bytes to %p (%d)">,fw_FrameCounterLong(a6),de_DiskLength(a1),a0,d7
PUTMSG 10,<"%d: LZ4 loading and decrunching %ld bytes to %p (%d)">,fw_FrameCounter-2(a6),de_DiskLength(a1),a0,d7
bsr fw_TrackmoLoadAndDecrunchToBuffer
move.l a1,a0
POPM
@ -728,7 +728,7 @@ fw_LoadAndDecrunchPart:
.clearmem
move.l (a3,d7.w),d0
add.l de_MemorySize(a1),d0
PUTMSG 10,<"%d: End of buffer %p, expected %p, memory size %ld">,fw_FrameCounterLong(a6),a0,d0,de_MemorySize(a1)
PUTMSG 10,<"%d: End of buffer %p, expected %p, memory size %ld">,fw_FrameCounter-2(a6),a0,d0,de_MemorySize(a1)
sub.l a0,d0 ; bytes to clear
.clearit
@ -818,7 +818,7 @@ fw_PreloadPart:
IFEQ FW_HD_TRACKMO_MODE
bsr fw_FindFile
move.l d7,-(sp)
PUTMSG 10,<"%d: Preparing loading and decrunching of %p">,fw_FrameCounterLong(a6),a1
PUTMSG 10,<"%d: Preparing loading and decrunching of %p">,fw_FrameCounter-2(a6),a1
tst.b de_NumHunks(a1)
bne.s .cont

View File

@ -61,6 +61,9 @@ _LVOFrameWorkVSyncWithTask = _LVOFrameWorkVSync
DEFFWFUNC InitPaletteLerpSameColor
DEFFWFUNC FadePaletteTo
DEFFWFUNC DoFadePaletteStep
IFEQ FW_PALETTE_LERP_SUPPORT-2
DEFFWFUNC DoFadePaletteStepBlueNoise
ENDC
ENDC
IF FW_SCRIPTING_SUPPORT

View File

@ -76,7 +76,7 @@ BLTWAIT MACRO
; channels, minterm, shift a, shift b, (optional: target)
BLTCON_SET MACRO
; write both bltcon0/bltcon1
IFNC '\5',''
IFNC '\5',''
move.l #(((BLTEN_\1+((\2)&$ff))|(\3<<12))<<16)|(\4<<12),\5
ELSE
move.l #(((BLTEN_\1+((\2)&$ff))|(\3<<12))<<16)|(\4<<12),bltcon0(a5)
@ -86,7 +86,7 @@ BLTCON_SET MACRO
; channels, minterm, shift a, (optional: target)
BLTCON0_SET MACRO
; write only bltcon0
IFNC '\4',''
IFNC '\4',''
move.w #((BLTEN_\1+((\2)&$ff))|(\3<<12)),\4
ELSE
move.w #((BLTEN_\1+((\2)&$ff))|(\3<<12)),bltcon0(a5)
@ -96,7 +96,7 @@ BLTCON0_SET MACRO
; channels, minterm, shift a, shift b, bltcon1 flags, (optional: target)
BLTCON_SET_X MACRO
; write both bltcon0/bltcon1
IFNC '\6',''
IFNC '\6',''
move.l #(((BLTEN_\1+((\2)&$ff))|(\3<<12))<<16)|(\4<<12)|(\5),\6
ELSE
move.l #(((BLTEN_\1+((\2)&$ff))|(\3<<12))<<16)|(\4<<12)|(\5),bltcon0(a5)

View File

@ -39,7 +39,7 @@ fw_InitMemoryManagement:
; Memory of other allocation direction is unchanged.
;
fw_DropCurrentMemoryAllocations:
PUTMSG 10,<"%d: DropCurrentMemoryAllocations">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: DropCurrentMemoryAllocations">,fw_FrameCounter-2(a6)
IFGE DEBUG_DETAIL-20
PUSHM a0/a1/d0
ELSE
@ -198,7 +198,7 @@ fw_PopMemoryState:
; d1/a1: Trashed.
;
fw_AllocFast:
PUTMSG 10,<"%d: AllocFast(%ld)">,fw_FrameCounterLong(a6),d0
PUTMSG 10,<"%d: AllocFast(%ld)">,fw_FrameCounter-2(a6),d0
addq.l #3,d0
and.w #-4,d0
@ -233,7 +233,7 @@ fw_AllocFast:
; d1/a1: Trashed.
;
fw_AllocChip:
PUTMSG 10,<"%d: AllocChip(%ld)">,fw_FrameCounterLong(a6),d0
PUTMSG 10,<"%d: AllocChip(%ld)">,fw_FrameCounter-2(a6),d0
addq.l #7,d0
and.w #-8,d0
@ -281,7 +281,7 @@ fw_AllocChip:
;
IF FW_64KB_PAGE_MEMORY_SUPPORT
fw_AllocChip64KB:
PUTMSG 10,<"%d: AllocChip64KB(%ld)">,fw_FrameCounterLong(a6),d0
PUTMSG 10,<"%d: AllocChip64KB(%ld)">,fw_FrameCounter-2(a6),d0
addq.l #7,d0
and.w #-8,d0

View File

@ -13,12 +13,12 @@ fw_Error:
;--------------------------------------------------------------------
; Sets the base copperlist and irq (empty screen).
;
; Background colour is unchanged, sprites and display are disabled.
; Background colour is unchanged, sprites and display are disabled.
;
; Out: Trashes d0/a0
;
fw_SetBaseCopper:
PUTMSG 10,<"%d: SetBaseCopper">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: SetBaseCopper">,fw_FrameCounter-2(a6)
moveq.l #0,d0
IF FW_VBL_IRQ_SUPPORT
move.l d0,fw_VBlankIRQ(a6)
@ -35,6 +35,15 @@ fw_SetBaseCopper:
move.l fw_VBR(a6),a0
move.l fw_DefaultIRQ(a6),$6c(a0)
IF FW_SOFT_IRQ_SUPPORT
lea fw_softint_irq(pc),a1
move.l a1,$64(a0)
ENDC
IF FW_AUDIO_IRQ_SUPPORT
move.l $70(a0),fw_OldSystemAudioIRQ(a6)
lea fw_audio_irq(pc),a1
move.l a1,$70(a0)
ENDC
move.w #INTF_BLIT,intena(a5) ; disable blitter interrupt
move.w #INTF_BLIT|INTF_COPER,intreq(a5)
@ -43,6 +52,10 @@ fw_SetBaseCopper:
ELSE
move.w #INTF_SETCLR|INTF_INTEN|INTF_VERTB,intena(a5) ; enable vblank interrupt
ENDC
IF FW_SOFT_IRQ_SUPPORT
move.w #INTF_SOFTINT,intreq(a5)
move.w #INTF_SETCLR|INTF_SOFTINT,intena(a5) ; enable soft interrupt
ENDC
bsr.s fw_VSync
move.w #DMAF_SETCLR|DMAF_MASTER|DMAF_BLITTER|DMAF_RASTER|DMAF_COPPER,dmacon(a5)
.clrspr
@ -86,6 +99,10 @@ fw_VSyncWithTask:
ENDC
fw_VSync:
IF FW_LMB_EXIT_SUPPORT
IFEQ FW_LMB_EXIT_SUPPORT-2
tst.w fw_DisableLMBExit(a6)
bne.s .noabort
ENDC
btst #6,$bfe001
beq .abortdemo
ENDC
@ -115,26 +132,40 @@ fw_VSync:
ENDC
;--------------------------------------------------------------------
; Waits until the global framecounter reaches the given frame
; Waits until the global framecounter reaches at least the given frame
;
; In : d0.w - frame to wait for
; Out: May trash all registers!
;
fw_WaitForFrame:
PUTMSG 10,<"%d: Waiting for frame %d">,fw_FrameCounterLong(a6),d0
.loop
cmp.w fw_FrameCounter(a6),d0
bmi.s .endwait
PUSHM d0
PUTMSG 20,<"%d: Waiting for frame %d">,fw_FrameCounter-2(a6),d0
IF FW_MULTITASKING_SUPPORT
bra fw_VSyncWithTask
ELSE
bra fw_VSync
ENDC
POPM
move.l #$1ff00,d1
and.l vposr(a5),d1
cmp.l #FW_MAX_VPOS_FOR_BG_TASK<<8,d1
ble.s .enoughtime
; we're close to the VBL, spin
BLTHOGON
.spin cmp.w fw_FrameCounter(a6),d0
bmi.s .endwait
; check if we have gone past the VBL
move.l #$1ff00,d1
and.l vposr(a5),d1
cmp.l #FW_MAX_VPOS_FOR_BG_TASK<<8,d1
bgt.s .spin
.enoughtime
.loop cmp.w fw_FrameCounter(a6),d0
bmi.s .endwait
move.w d0,-(sp)
bsr fw_VSyncWithTask
move.w (sp)+,d0
bra.s .loop
ELSE
.spin cmp.w fw_FrameCounter(a6),d0
bpl.s .spin
ENDC
.endwait
PUTMSG 10,<"%d: Waiting done">,fw_FrameCounterLong(a6)
PUTMSG 20,<"%d: Waiting done">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
@ -155,11 +186,15 @@ fw_FlushCaches:
IF FW_COPPER_IRQ_SUPPORT
fw_copper_irq:
IF FW_A5_A6_UNTOUCHED
PUSHM d0/a0/a5/a6
lea $dff000,a5
move.w #INTF_COPER,intreq(a5) ;acknowledge the copper-irq.
move.w #INTF_COPER,intreq(a5) ;acknowledge the copper-irq.
move.l fw_BasePtr(pc),a6
ELSE
PUSHM d0/a0
ENDC
move.w #INTF_COPER,intreq(a5) ;acknowledge the copper-irq.
move.w #INTF_COPER,intreq(a5) ;acknowledge the copper-irq.
move.l fw_CopperIRQ(a6),d0
beq.s .nocop
move.l d0,a0
@ -176,21 +211,29 @@ fw_vblank_standard_irq:
btst #INTB_COPER,$dff000+intreqr+1
bne.s fw_copper_irq
ENDC
IF FW_A5_A6_UNTOUCHED
IF FW_VBL_IRQ_SUPPORT|(FW_MUSIC_SUPPORT&FW_VBL_MUSIC_IRQ)
PUSHM d0-d3/a0-a3
ENDC
ELSE
IF FW_VBL_IRQ_SUPPORT|(FW_MUSIC_SUPPORT&FW_VBL_MUSIC_IRQ)
PUSHM d0-d3/a0-a3/a5/a6
ELSE
PUSHM a5/a6
ENDC
lea $dff000,a5
move.l fw_BasePtr(pc),a6
ENDC
move.w #INTF_VERTB,intreq(a5) ;acknowledge the VBL-irq.
move.w #INTF_VERTB,intreq(a5) ;acknowledge the VBL-irq.
move.l fw_BasePtr(pc),a6
addq.w #1,fw_FrameCounter(a6)
IF (FW_MUSIC_SUPPORT&FW_VBL_MUSIC_IRQ)
tst.w fw_MusicEnabled(a6)
move.l fw_MusicTickRoutine(a6),d0
beq.s .skipmus
bsr fw_MusicPlay
move.l d0,a0
jsr (a0) ; IRQ must maintain d4-d7/a4
.skipmus
ENDC
IF FW_VBL_IRQ_SUPPORT
@ -200,6 +243,57 @@ fw_vblank_standard_irq:
jsr (a0) ; IRQ must maintain d4-d7/a4
.novbl
ENDC
IF FW_A5_A6_UNTOUCHED
IF FW_VBL_IRQ_SUPPORT|(FW_MUSIC_SUPPORT&FW_VBL_MUSIC_IRQ)
POPM
ENDC
ELSE
POPM
ENDC
nop
rte
rte
IF FW_SOFT_IRQ_SUPPORT
fw_softint_irq:
IFEQ FW_A5_A6_UNTOUCHED
PUSHM a5/a6
lea $dff000,a5
move.l fw_BasePtr(pc),a6
ENDC
move.w #INTF_SOFTINT,intreq(a5)
pea .skip(pc)
move.l fw_SoftIRQ(a6),-(sp)
beq.s .nopsy
rts
.nopsy addq.l #8,sp
.skip
IFEQ FW_A5_A6_UNTOUCHED
POPM
ENDC
nop
rte
ENDC
IF FW_AUDIO_IRQ_SUPPORT
fw_audio_irq:
PUTMSG 60,<"INT %lx">,$dff000+intenar
IFEQ FW_A5_A6_UNTOUCHED
PUSHM a5/a6
lea $dff000,a5
move.l fw_BasePtr(pc),a6
ENDC
move.w #INTF_AUD0|INTF_AUD1|INTF_AUD2|INTF_AUD3,intreq(a5)
pea .skip(pc)
move.l fw_AudioIRQ(a6),-(sp)
beq.s .noaud
rts ; IRQ must maintain d0-d7/a1-a4
.noaud addq.l #8,sp
.skip
IFEQ FW_A5_A6_UNTOUCHED
POPM
ENDC
nop
rte
ENDC

View File

@ -34,7 +34,7 @@
; with all your variable space cleared.
;
; Make sure that you don't free the memory allocated here until
; the end of your part! The demo framework will call
; the end of your part! The demo framework will call
; RestoreFrameworkBase automatically at exit of your part.
;
; Flushes the caches (if available), too.
@ -44,7 +44,7 @@
; Trashes: everything except a5/a6
;
fw_InitPart:
PUTMSG 10,<"%d: InitPart(%ld)">,fw_FrameCounterLong(a6),d0
PUTMSG 10,<"%d: InitPart(%ld)">,fw_FrameCounter-2(a6),d0
PUSHM d0
bsr fw_RestoreFrameworkBase
POPM
@ -67,8 +67,8 @@ fw_InitPart:
move.l a6,fw_PartFwBase(a6)
move.l fw_PartDataSize(a6),d7
addq.w #3,d7
lsr.w #2,d7
sub.l #fw_SIZEOF-3,d7
lsr.l #2,d7
beq.s .skipclr
subq.w #1,d7
moveq.l #0,d0
@ -98,7 +98,7 @@ fw_InitPart:
move.l a6,(a0)
bsr fw_FlushCaches
ENABLE_INTS
PUTMSG 20,<"%d: InitPart done %p">,fw_FrameCounterLong(a6),a6
PUTMSG 20,<"%d: InitPart done %p">,fw_FrameCounter-2(a6),a6
rts
;--------------------------------------------------------------------
@ -111,7 +111,7 @@ fw_InitPart:
; Trashes: everything except a5/a6
;
fw_RestoreFrameworkBase:
PUTMSG 10,<"%d: RestoreFrameworkBase(%p)">,fw_FrameCounterLong(a6),a6
PUTMSG 10,<"%d: RestoreFrameworkBase(%p)">,fw_FrameCounter-2(a6),a6
DISABLE_INTS
move.l fw_PartFwBase(a6),a0
move.l fw_PrimaryFwBase(a6),a1
@ -206,6 +206,6 @@ fw_FixA6BaseInTaskStacks:
fw_lvo_offsets:
FWGENLVOTABLE SET 1
include "../framework/framework_lvos.i"
include "framework_lvos.i"
dc.w 0
FWGENLVOTABLE SET 0

View File

@ -8,16 +8,15 @@ fw_StartMusic:
move.l fw_MusicData(a6),a0
move.l fw_MusicSamples(a6),a1
bsr fw_MusicInit
move.w #1,fw_MusicEnabled(a6)
rts
;--------------------------------------------------------------------
; Stops the music playback if music is active
;
fw_StopMusic:
tst.w fw_MusicEnabled(a6)
tst.l fw_MusicTickRoutine(a6)
bne.s .cont
rts
.cont clr.w fw_MusicEnabled(a6)
.cont clr.l fw_MusicTickRoutine(a6)
bra fw_MusicStop

View File

@ -106,7 +106,7 @@ fw_FadePaletteTo:
ror.w #4,d1
move.w cl_Red+le_Current(a1),d3
lsr.w #1,d1
add.w #$80,d1
add.w #$400,d1
lsr.w #1,d3
sub.w d3,d1
asr.w d2,d1
@ -118,7 +118,7 @@ fw_FadePaletteTo:
clr.b d1
move.w cl_Green+le_Current(a1),d3
lsr.w #1,d1
add.w #$80,d1
add.w #$400,d1
lsr.w #1,d3
sub.w d3,d1
asr.w d2,d1
@ -129,7 +129,7 @@ fw_FadePaletteTo:
ror.w #4,d1
move.w cl_Blue+le_Current(a1),d3
lsr.w #1,d1
add.w #$80,d1
add.w #$400,d1
lsr.w #1,d3
sub.w d3,d1
asr.w d2,d1
@ -158,6 +158,7 @@ fw_DoFadePaletteStep:
moveq.l #0,d4
.loop
addq.w #2,a1
.loop2
move.w (a1),d1 ; cl_Steps
beq.s .skip
moveq.l #1,d4
@ -184,10 +185,81 @@ fw_DoFadePaletteStep:
dbra d0,.loop
rts
.skip
lea cl_SIZEOF-2(a1),a1
dbra d0,.loop
lea cl_SIZEOF(a1),a1
dbra d0,.loop2
subq.w #2,a1
tst.w d4
bne.s .noend
st (a0)
.noend
rts
IFEQ FW_PALETTE_LERP_SUPPORT-2
; a1 = lerp structures
; d0 = number of colors
fw_DoFadePaletteStepBlueNoise:
move.l fw_BlueNoiseTablePtr(a6),a0
move.w #1024*2,d2
move.w d0,d1
add.w d1,d1
add.w d0,d1
add.w d1,d1
sub.w d1,d2
move.w fw_BlueNoisePos(a6),d1
cmp.w d2,d1
blt.s .nowrap
sub.w d2,d1
.nowrap
adda.w d1,a0
add.w d0,d1
add.w d0,d1
move.w d1,fw_BlueNoisePos(a6)
subq.w #1,d0
bcc.s .loop
rts
.loop
addq.w #2,a1
move.w (a1),d1 ; cl_Steps
beq.s .skip
subq.w #1,d1
move.w d1,(a1)+ ; cl_Steps
move.w (a1)+,d1 ; cl_Red+le_Add
add.w (a1),d1 ; cl_Red+le_Current
move.w d1,(a1)+ ; cl_Red+le_Current
move.w (a1)+,d2 ; cl_Green+le_Add
add.w (a1),d2 ; cl_Green+le_Current
move.w d2,(a1)+ ; cl_Green+le_Current
move.w (a1)+,d3 ; cl_Blue+le_Add
add.w (a1),d3 ; cl_Blue+le_Current
move.w d3,(a1)+ ; cl_Blue+le_Current
bra.s .addnoise
.skip
addq.w #2,a1
movem.l (a1)+,d1/d2/d3 ; cl_Red/cl_Green/cl_Blue+le_Current
.addnoise
add.w (a0)+,d1
bcc.s .nofr
moveq.l #-1,d1
.nofr
add.w (a0)+,d2
bcc.s .nofg
moveq.l #-1,d2
.nofg
add.w (a0)+,d3
bcc.s .nofb
moveq.l #-1,d3
.nofb
lsr.w #4,d1
moveq.l #15,d2
rol.w #4,d3
and.w d2,d3
moveq.l #-16,d2
and.b cl_Green+le_Current-(cl_Blue+le_Current+2)(a1),d2
or.b d3,d2
move.b d2,d1
move.w d1,-cl_SIZEOF(a1) ; cl_Color
dbra d0,.loop
rts
ENDC

View File

@ -14,7 +14,7 @@
; In : a0 = script pointer
;
fw_InstallScript:
PUTMSG 10,<"%d: Script at %p installed">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: Script at %p installed">,fw_FrameCounter-2(a6),a0
move.l a0,fw_ScriptPointer(a6)
move.w fw_FrameCounter(a6),fw_ScriptFrameOffset(a6)
rts
@ -37,7 +37,7 @@ fw_CheckScript:
move.w (a0)+,d0
move.l a0,fw_ScriptPointer(a6)
pea -2(a0,d0.w)
PUTMSG 10,<"%d: Script hit %p">,fw_FrameCounterLong(a6),(sp)
PUTMSG 10,<"%d: Script hit %p">,fw_FrameCounter-2(a6),(sp)
tst.w (a0)
bne.s .exit
PUTMSG 10,<"Script terminated.">
@ -48,7 +48,7 @@ fw_CheckScript:
;--------------------------------------------------------------------
; Install a music-frame based script
;
; Routines of the script will be executed via CheckMusicScript once
; Routines of the script will be executed via CheckMusicScript once
; the given absolute music frame numbers have been reached (or passed).
;
; A script is built in this way:
@ -60,7 +60,7 @@ fw_CheckScript:
; In : a0 = script pointer
;
fw_InstallMusicScript:
PUTMSG 10,<"%d: MusicScript at %p installed">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: MusicScript at %p installed">,fw_FrameCounter-2(a6),a0
move.l a0,fw_MusicScriptPointer(a6)
rts
@ -81,7 +81,7 @@ fw_CheckMusicScript:
move.w (a0)+,d0
move.l a0,fw_MusicScriptPointer(a6)
pea -2(a0,d0.w)
PUTMSG 10,<"%d: MusicScript (%d) hit %p">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6),(sp)
PUTMSG 10,<"%d: MusicScript (%d) hit %p">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6),(sp)
tst.w (a0)
bne.s .exit
PUTMSG 10,<"MusicScript terminated.">

View File

@ -7,7 +7,7 @@
; accessible through the fw_SinTable(a6) and fw_CosTable(a6) base pointers.
;
fw_InitSineTable:
PUTMSG 10,<"%d: Script at %p installed">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: Init Sine table %p">,fw_FrameCounter-2(a6),a0
IF FW_DYNAMIC_MEMORY_SUPPORT
move.l #(1024+256)*2,d0
bsr fw_AllocFast
@ -23,7 +23,6 @@ fw_InitSineTable:
move.l a1,fw_FastMemStack(a6)
ENDC
PUTMSG 10,<"%d: Init Sine table %p">,fw_FrameCounterLong(a6),a0
moveq.l #0,d0 ; amp=16384, length=1024
move.w #511+2,a1
.loop subq.l #2,a1
@ -53,5 +52,5 @@ fw_InitSineTable:
.cloop move.l (a0)+,(a1)+
dbra d0,.cloop
PUTMSG 10,<"%d: Sine table done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Sine table done">,fw_FrameCounter-2(a6)
rts

View File

@ -32,7 +32,7 @@ fw_InitTasks:
; Out: All registers are unchanged.
;
fw_AddTask:
PUTMSG 10,<"%d: AddTask(%p,%p,%s)">,fw_FrameCounterLong(a6),a0,a1,LN_NAME(a1)
PUTMSG 10,<"%d: AddTask(%p,%p,%s)">,fw_FrameCounter-2(a6),a0,a1,LN_NAME(a1)
tst.l ft_USP(a1)
bne fw_Error
IF FW_TOP_BOTTOM_MEM_SECTIONS
@ -59,7 +59,7 @@ fw_AddTask:
.cleanup
;move.l fw_BasePtr(pc),a6
move.l (sp)+,a1 ; suppress M68kDeadWrite used by REMOVE
PUTMSG 10,<"%d: background task %p (%s) finished">,fw_FrameCounterLong(a6),a1,LN_NAME(a1)
PUTMSG 10,<"%d: background task %p (%s) finished">,fw_FrameCounter-2(a6),a1,LN_NAME(a1)
.waitforsafearea
move.l #$1ff00,d0
@ -111,6 +111,9 @@ fw_KillTaskContext:
clr.l fw_PrimaryUSP(a6)
move.w fw_MainCurrentFrame(a6),d0
ENABLE_INTS
btst #DMAB_BLTDONE-8,dmaconr(a5)
beq.s .loop
BLTHOGON
.loop cmp.w fw_FrameCounter(a6),d0
beq.s .loop
rts
@ -130,6 +133,10 @@ fw_VSyncWithTask:
bgt fw_VSync
IF FW_LMB_EXIT_SUPPORT
IFEQ FW_LMB_EXIT_SUPPORT-2
tst.w fw_DisableLMBExit(a6)
bne.s .noabort
ENDC
btst #6,$bfe001
beq .abortdemo
.noabort
@ -246,7 +253,7 @@ fw_RemTask:
tst.l ft_USP(a1)
bne.s .remove
rts
.remove PUTMSG 10,<"%d: Removing still running task %p (%s)">,
.remove PUTMSG 10,<"%d: Removing still running task %p (%s)">,fw_FrameCounter-2(a6),a1,LN_NAME(a1)
clr.l ft_USP(a1)
REMOVE
rts
@ -309,9 +316,10 @@ fw_backgroundtask_restore_irq:
addq.w #1,fw_FrameCounter(a6)
IF (FW_MUSIC_SUPPORT&FW_VBL_MUSIC_IRQ)
tst.w fw_MusicEnabled(a6)
move.l fw_MusicTickRoutine(a6),d0
beq.s .skipmus
bsr fw_MusicPlay
move.l d0,a0
jsr (a0) ; IRQ must maintain d4-d7/a4
.skipmus
ENDC
@ -388,7 +396,7 @@ fw_AddAndRunBlitterTask:
ENABLE_INTS
rts
.irqcleanup
PUTMSG 30,<"%d: blitter task finished">,fw_FrameCounterLong(a6)
PUTMSG 30,<"%d: blitter task finished">,fw_FrameCounter-2(a6)
move.l fw_VBR(a6),a0
move.l fw_DefaultIRQ(a6),$6c(a0)
clr.l fw_BackgroundTask(a6) ; make sure we don't have a stray pointer

View File

@ -371,7 +371,7 @@ fw_TrackloaderLoadAndDecrunchLZ4Delta8:
;--------------------------------------------------------------------
; Waits for a diskchange (disk is removed and inserted again)
;
;
fw_TrackloaderWaitForDiskChange:
PUSHM a4
lea $bfd100,a4
@ -394,7 +394,7 @@ fw_TrackloaderWaitForDiskChange:
; d1.l - bytes to read (may be odd, but one extra byte will be written then)
; returns a1 end of buffer written
fw_LoadMFM:
PUTMSG 10,<"%d: LoadMFM of %ld bytes at offset %ld to %p">,fw_FrameCounterLong(a6),d1,d0,a0
PUTMSG 10,<"%d: LoadMFM of %ld bytes at offset %ld to %p">,fw_FrameCounter-2(a6),d1,d0,a0
IF FW_MULTITASKING_SUPPORT
.retry
subq.w #1,fw_TrackloaderIdle(a6)
@ -474,7 +474,7 @@ fw_LoadMFM:
.finished
move.l a3,a1
POPM
PUTMSG 10,<"%d: Data load finished">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Data load finished">,fw_FrameCounter-2(a6)
IF FW_MULTITASKING_SUPPORT
addq.w #1,fw_TrackloaderIdle(a6)
ENDC
@ -483,7 +483,7 @@ fw_LoadMFM:
; Prefetch the next track to be loaded (but not decoded) into MFM buffer
fw_PreparePrefetchOfNextTrack:
PUTMSG 20,<"%d: PreparePrefetchOfNextTrack %d+1 (%d:%d)">,fw_FrameCounterLong(a6),fw_LastMfmTrack-2(a6),fw_CurrentCylinder-2(a6),fw_CurrentHead-2(a6)
PUTMSG 20,<"%d: PreparePrefetchOfNextTrack %d+1 (%d:%d)">,fw_FrameCounter-2(a6),fw_LastMfmTrack-2(a6),fw_CurrentCylinder-2(a6),fw_CurrentHead-2(a6)
PUSHM d6
clr.w fw_MfmDoPrefetch(a6)
tst.w fw_MfmReadingTriggered(a6)
@ -696,7 +696,7 @@ fw_FindRightFloppyDriveUnit:
; turn the floppy motor on and wait until the motor is running
fw_MotorOn:
PUTMSG 10,<"%d: Motor on">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Motor on">,fw_FrameCounter-2(a6)
move.w fw_CurrentDrive(a6),d0
addq.w #CIAB_DSKSEL0,d0
or.b #CIAF_DSKSEL0|CIAF_DSKSEL1|CIAF_DSKSEL2|CIAF_DSKSEL3,(a4)
@ -720,7 +720,7 @@ fw_MotorOff:
.retry
tst.w fw_MfmReadingTriggered(a6)
beq.s .noreadinginprogress
PUTMSG 10,<"%d: Waiting for read to finish before turning off motor">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Waiting for read to finish before turning off motor">,fw_FrameCounter-2(a6)
bsr fw_WaitForTrackDmaDone
.noreadinginprogress
IF FW_MULTITASKING_SUPPORT
@ -730,7 +730,7 @@ fw_MotorOff:
bra.s .retry
ENDC
.nowait
PUTMSG 10,<"%d: Motor Off">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Motor Off">,fw_FrameCounter-2(a6)
move.w fw_CurrentDrive(a6),d0
addq.w #CIAB_DSKSEL0,d0
bset d0,(a4)
@ -752,7 +752,7 @@ fw_TriggerReadTrack:
PUTMSG 30,<"MfmTrack already read %d">,d0
rts
.cont
PUTMSG 20,<"%d: Triggered reading of track %d">,fw_FrameCounterLong(a6),d0
PUTMSG 20,<"%d: Triggered reading of track %d">,fw_FrameCounter-2(a6),d0
clr.w fw_MfmReadingDone(a6)
move.w d0,fw_LastMfmTrack(a6)
@ -779,7 +779,7 @@ fw_WaitForTrackDmaDone:
rts
.waitdma
.rereadwaitdma
PUTMSG 40,<"%d: MFM Wait">,fw_FrameCounterLong(a6)
PUTMSG 40,<"%d: MFM Wait">,fw_FrameCounter-2(a6)
IF FW_MULTITASKING_SUPPORT
bra.s .firstskipyield
ENDC
@ -788,7 +788,7 @@ fw_WaitForTrackDmaDone:
.firstskipyield
btst #INTB_DSKBLK,intreqr+1(a5) ; wait until data read
beq.s .waitdmadone
PUTMSG 20,<"%d: MFM Done">,fw_FrameCounterLong(a6)
PUTMSG 20,<"%d: MFM Done">,fw_FrameCounter-2(a6)
st fw_MfmReadingDone(a6)
clr.w fw_MfmReadingTriggered(a6)
rts
@ -799,7 +799,7 @@ fw_DecodeMfmTrack:
.rereadwaitdma
bsr fw_WaitForTrackDmaDone
PUTMSG 20,<"%d: Decoding Track %d">,fw_FrameCounterLong(a6),fw_LastMfmTrack-2(a6)
PUTMSG 20,<"%d: Decoding Track %d">,fw_FrameCounter-2(a6),fw_LastMfmTrack-2(a6)
move.w #-1,fw_LastTrack(a6) ; mark last track buffer as invalid in case of error
move.l #$55555555,d3 ; and-const
@ -881,7 +881,7 @@ fw_DecodeMfmTrack:
move.w fw_LastMfmTrack(a6),fw_LastTrack(a6)
move.w fw_LastMfmTrack(a6),d0
ext.l d0
PUTMSG 10,<"%d: Decoded Track %d">,fw_FrameCounterLong(a6),d0
PUTMSG 10,<"%d: Decoded Track %d">,fw_FrameCounter-2(a6),d0
POPM
rts

View File

@ -186,16 +186,15 @@ LSP_MusicInit:
move.w (a0)+,d0 ; codes table size
move.l a0,fw_LspCodeTableAddr(a6) ; code table
add.w d0,d0
add.w d0,a0
adda.w d0,a0
; read sequence timing infos (if any)
move.w (a0)+,d0
move.w d0,(a3)+ ; fw_LspSeqCount
move.l a0,(a3)+ ; fw_LspSeqTable
clr.w (a3)+ ; fw_LspCurrentSeq
move.w d0,d1
lsl.w #3,d1 ; 8 bytes per entry
adda.w d1,a0
lsl.w #3,d0 ; 8 bytes per entry
adda.w d0,a0
movem.l (a0)+,d0/d1/d2 ; word stream size/byte stream loop point/word stream loop point
move.l a0,(a3)+ ; fw_LspStreamBase

View File

@ -53,6 +53,8 @@ LSP_MusicDriver_CIA_Start:
; d1: PAL(0) or NTSC(1)
.LSP_IrqInstall
move.w #INTF_EXTER,intena(a5) ; disable CIA interrupt
lea LSP_MusicPlayTick(pc),a0
move.l a0,fw_MusicTickRoutine(a6)
lea .LSP_MainIrq(pc),a0
move.l fw_VBR(a6),a2
move.l a0,$78(a2)
@ -92,7 +94,8 @@ LSP_MusicDriver_CIA_Start:
; call player tick
lea $dff000,a5
move.l fw_BasePtr(pc),a6
bsr LSP_MusicPlayTick ; LSP main music driver tick
move.l fw_MusicTickRoutine(a6),a0
jsr (a0) ; LSP main music driver tick
; check if BMP changed in the middle of the music
lea $bfd000,a4

View File

@ -0,0 +1,158 @@
;*****************************************************************
;
; Light Speed Player v1.20
; Fastest Amiga MOD player ever :)
; Written By Arnaud Carré (aka Leonard / OXYGENE)
; Adapted to demo framework (and optimized) by platon42.
; https://github.com/arnaud-carre/LSPlayer
; twitter: @leonard_coder
;
; "micro mode" player version ( average time: 1.5 scanline )
; This mode focus on music data compression ratio. Suited for 4KiB or small intros
; Do not support various BPM, music getPos/setPos and sample without a note
;
; You can also use classic "standard" player to support all features
; Or you can use generated "ultra fast" player code for half scanline replayer ("-insane" option)
;
; LSP_MusicInitMicro Initialize a LSP driver + relocate score&bank music data
; LSP_MusicPlayTickMicro Play a LSP music (call it per frame)
;
;*****************************************************************
;------------------------------------------------------------------
;
; LSP_MusicInitMicro
;
; In: a0: LSP music data(any memory)
; a1: LSP sound bank(chip memory)
;
;------------------------------------------------------------------
;LSP_dataError: illegal
LSP_MusicInitMicro:
IF 0
cmpi.l #'LSPm',(a0)+ ; LSP "micro" mode signature
bne.s LSP_dataError
cmpi.w #$0118,(a0)+ ; this play routine supports v1.24 as minimal version of LPConvert.exe
blt.s LSP_dataError
ELSE
addq.l #6,a0
ENDC
lea fw_LspLastDmaCon(a6),a2
clr.w (a2)+ ; fw_LspLastDmaCon
move.w (a0)+,(a2)+ ; fw_LspCurrentBpm, default song BPM
move.w (a0)+,d7 ; instrument count
move.l a0,(a2)+ ; fw_LspInstruments, instrument tab addr
move.l a1,d1
subq.w #1,d7
.relocloop
add.l d1,(a0)
addq.l #6,a0
add.l d1,(a0)
addq.l #6,a0
dbra d7,.relocloop
;lea fw_LspStreams(a6),a2
lea 16*4(a0),a1
; do not stress about this rept, your exe packer will enjoy it
REPT 16
move.l (a0)+,d1
add.l a1,d1
move.l d1,fw_LspLoopStreams-fw_LspStreams(a2) ; set loopStreams at 0 by default
move.l d1,(a2)+
ENDR
bset.b #1,$bfe001 ; disabling this fucking Low pass filter!!
rts
;------------------------------------------------------------------
;
; LSP_MusicPlayTickMicro
;
; In: a5: should be $dff000
; Out:None
;
;------------------------------------------------------------------
LSP_MusicPlayTickMicro:
move.w fw_LspLastDmaCon(a6),d0
beq.s .skip
lea fw_LspResetv(a6),a3
lea aud+4*ac_SIZEOF(a5),a2
moveq.l #4-1,d7
.rloop lea -ac_SIZEOF(a2),a2
btst d7,d0
beq.s .norst
move.l (a3)+,ac_ptr(a2)
move.w (a3)+,ac_len(a2)
.norst dbra d7,.rloop
.skip lea fw_LspStreams(a6),a1
moveq.l #0,d3
lea fw_LspResetv(a6),a3
lea aud+4*ac_SIZEOF(a5),a2
moveq.l #4-1,d7
.vloop lea -ac_SIZEOF(a2),a2
moveq.l #16,d4
move.l a1,a4
move.l (a4),a0
move.b (a0)+,d0 ; cmd for current voice
move.l a0,(a1)+ ; update cmd stream ptr
adda.w d4,a4
add.b d0,d0
bcc.s .novol
move.l (a4),a0
move.b (a0)+,ac_vol+1(a2)
move.l a0,(a4)
.novol adda.w d4,a4
add.b d0,d0
bcc.s .noper
move.l (a4),a0
move.w (a0)+,ac_per(a2)
move.l a0,(a4)
.noper adda.w d4,a4
add.b d0,d0
bcc.s .noinstr
move.l (a4),a0
moveq.l #0,d1
move.b (a0)+,d1
move.l a0,(a4)
; prepare instrument
IF 1
mulu #12,d1
ELSE
move.w d1,d2
lsl.w #2,d1 ; x*4
lsl.w #3,d2 ; x*8
add.w d2,d1 ; x*(4+8)
ENDIF
move.l fw_LspInstruments(a6),a0
adda.w d1,a0
bset d7,d3
move.l (a0)+,ac_ptr(a2)
move.w (a0)+,ac_len(a2)
move.l (a0)+,(a3)+
move.w (a0)+,(a3)+
.noinstr
dbra d7,.vloop
move.w d3,dmacon(a5)
move.w d3,fw_LspLastDmaCon(a6)
move.l fw_LspDmaConPatch(a6),a0
move.b d3,(a0)
add.b d0,d0
bcc.s .noloopcmd
; backup or restore current song position
lea fw_LspStreams(a6),a0
lea fw_LspLoopStreams(a6),a1
add.b d0,d0
bcc.s .skiprestore
exg a0,a1
.skiprestore
; do not stress about this rept, your exe packer will enjoy it
REPT 16
move.l (a0)+,(a1)+
ENDR
.noloopcmd
rts

View File

@ -0,0 +1,170 @@
;*****************************************************************
;
; Light Speed Player v1.20
; Fastest Amiga MOD player ever :)
; Written By Arnaud Carré (aka Leonard / OXYGENE)
; Adapted to demo framework (and optimized) by platon42.
; https://github.com/arnaud-carre/LSPlayer
; twitter: @leonard_coder
;
; "nano mode" player version (average time: 1-2 scanlines)
; This mode focus on music data compression ratio. Suited for 4KiB or small intros
; Only supports VBL timing, 32 KB max stream data, no portamentos/slides,
; no support for music getPos/setPos and sample without a note
;
; You can also use classic "standard" player to support all features
; Or you can use generated "ultra fast" player code for half scanline replayer ("-insane" option)
;
; LSP_MusicInitNano Initialize a LSP driver + relocate score&bank music data
; LSP_MusicPlayTickNano Play a LSP music (call it per frame)
;
;*****************************************************************
;------------------------------------------------------------------
;
; LSP_MusicInitNano
;
; In: a0: LSP music data(any memory)
; a1: LSP sound bank(chip memory)
;
;------------------------------------------------------------------
LSP_MusicInitNano:
lea fw_LspPeriodTable(a6),a2
IF 0
move.w #$e2b3,d0
move.l #$0fc0fd20,d2
moveq.l #0,d3
moveq.l #36-1,d7
.ploop mulu #61865,d0
swap d0
move.w d0,d1
lsr.w #6,d1
add.l d2,d2
subx.w d3,d1
move.w d1,(a2)+
dbra d7,.ploop
ELSE
move.w #$e2b3,d0
moveq.l #36-1,d7
.ploop mulu #61865,d0
swap.w d0
move.w d0,d1
lsr.w #6,d1
move.w d1,(a2)+
dbra d7,.ploop
ENDC
clr.w (a2)+ ; fw_LspLastDmaCon
move.w (a0)+,d7 ; instrument count-1
move.l a0,(a2)+ ; fw_LspInstruments, instrument tab addr
move.l a1,d0
.relocloop
add.l d0,(a0)
addq.l #6,a0
add.l d0,(a0)
addq.l #6,a0
dbra d7,.relocloop
; do not stress about this rept, your exe packer will enjoy it
REPT 16
move.l a0,a1
adda.w (a0)+,a1
move.l a1,fw_LspLoopStreams-fw_LspStreams(a2) ; set loopStreams at 0 by default
move.l a1,(a2)+
ENDR
bset.b #1,$bfe001 ; disabling this fucking Low pass filter!!
rts
;------------------------------------------------------------------
;
; LSP_MusicPlayTickNano
;
; In: a5: should be $dff000
; Out:None
;
;------------------------------------------------------------------
LSP_MusicPlayTickNano:
move.w fw_LspLastDmaCon(a6),d0
beq.s .skip
lea fw_LspResetv(a6),a3
lea aud+4*ac_SIZEOF(a5),a2
moveq.l #4-1,d7
.rloop lea -ac_SIZEOF(a2),a2
btst d7,d0
beq.s .norst
move.l (a3)+,ac_ptr(a2)
move.w (a3)+,ac_len(a2)
.norst dbra d7,.rloop
.skip lea fw_LspStreams(a6),a1
moveq.l #0,d3
lea fw_LspPeriodTable(a6),a4
lea fw_LspResetv(a6),a3
lea aud+4*ac_SIZEOF(a5),a2
moveq.l #4-1,d7
.vloop lea -ac_SIZEOF(a2),a2
move.l (a1),a0
move.b (a0)+,d1 ; cmd for current voice
move.l a0,(a1) ; update cmd stream ptr
move.w d1,d0
addq.l #4,a1
add.b d0,d0
bcc.s .novol
move.l (a1),a0
moveq.l #0,d1
move.b (a0)+,d1
move.l a0,(a1)
move.w d1,ac_vol(a2)
.novol addq.l #4,a1
add.b d0,d0
bcc.s .noper
move.l (a1),a0
moveq.l #0,d1
move.b (a0)+,d1
move.l a0,(a1)
move.w (a4,d1.w),ac_per(a2)
.noper addq.l #4,a1
add.b d0,d0
bcc.s .noinstr
move.l (a1),a0
moveq.l #0,d1
move.b (a0)+,d1
move.l a0,(a1)
; prepare instrument
move.l fw_LspInstruments(a6),a0
mulu #12,d1
adda.w d1,a0
bset d7,d3
move.l (a0)+,ac_ptr(a2)
move.w (a0)+,ac_len(a2)
move.l (a0)+,(a3)+
move.w (a0)+,(a3)+
.noinstr
addq.l #4,a1
dbra d7,.vloop
move.w d3,dmacon(a5)
move.w d3,fw_LspLastDmaCon(a6)
move.l fw_LspDmaConPatch(a6),a0
move.b d3,(a0)
add.b d0,d0
bcc.s .noloopcmd
; backup or restore current song position
lea fw_LspStreams(a6),a0
lea fw_LspLoopStreams(a6),a1
add.b d0,d0
bcc.s .skiprestore
exg a0,a1
.skiprestore
; do not stress about this rept, your exe packer will enjoy it
REPT 16
move.l (a0)+,(a1)+
ENDR
.noloopcmd
rts

View File

@ -28,9 +28,12 @@ fw_MusicStop:
;--------------------------------------------------------------------
; sets the position if supported
; d0.w = new position
IFNE DEBUG_DETAIL
fw_MusicSetPosition EQU LSP_MusicSetPos
ELSE
fw_MusicSetPosition:
bra LSP_MusicSetPos
rts
ENDC
include "../framework/musicplayers/lightspeedplayer_cia.asm"
include "../framework/musicplayers/lightspeedplayer.asm"
include "musicplayers/lightspeedplayer_cia.asm"
include "musicplayers/lightspeedplayer.asm"

View File

@ -7,6 +7,8 @@ fw_MusicInit:
bsr.s LSP_MusicInit
moveq.l #-1,d0
move.w d0,fw_MusicFrameCount(a6)
lea fw_MusicPlay(pc),a0
move.l a0,fw_MusicTickRoutine(a6)
PUTMSG 10,<"Music-Init done">
rts
@ -17,6 +19,7 @@ fw_MusicPlay:
rts
fw_MusicStop:
clr.l fw_MusicTickRoutine(a6)
move.w #DMAF_AUDIO,dmacon(a5)
; unsupported right now
rts
@ -24,7 +27,11 @@ fw_MusicStop:
;--------------------------------------------------------------------
; sets the position if supported
; d0.w = new position
IFNE DEBUG_DETAIL
fw_MusicSetPosition EQU LSP_MusicSetPos
ELSE
fw_MusicSetPosition:
bra LSP_MusicSetPos
rts
ENDC
include "../framework/musicplayers/lightspeedplayer.asm"
include "musicplayers/lightspeedplayer.asm"

View File

@ -1,5 +1,4 @@
fw_MusicInit:
fw_MusicStop:
fw_MusicPlay:
fw_MusicSetPosition:
rts

View File

@ -15,7 +15,7 @@ fw_MusicAlloc:
rts
fw_MusicInit:
PUTMSG 10,<"%d: Pretracker song init %p %p">,fw_FrameCounterLong(a6),a0,a1
PUTMSG 10,<"%d: Pretracker song init %p %p">,fw_FrameCounter-2(a6),a0,a1
move.l a0,a2
PUSHM d7/a1
move.l fw_PretrackerMyPlayer(a6),a0
@ -34,7 +34,7 @@ fw_MusicInit:
move.l a0,a1
.noalloc
PUTMSG 10,<"%d: Pretracker player init">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Pretracker player init">,fw_FrameCounter-2(a6)
move.l fw_PretrackerMyPlayer(a6),a0
move.l fw_PretrackerMySong(a6),a2
@ -42,17 +42,19 @@ fw_MusicInit:
adda.w 6(a3),a3
jsr (a3) ; playerInit
PUTMSG 10,<"%d: Pretracker init done">,fw_FrameCounterLong(a6)
lea fw_MusicPlay(pc),a0
move.l a0,fw_MusicTickRoutine(a6)
PUTMSG 10,<"%d: Pretracker init done">,fw_FrameCounter-2(a6)
rts
fw_MusicPlay:
move.l fw_PretrackerMyPlayer(a6),a0
lea fw_PretrackerReplayer(pc),a3
adda.w 10(a3),a3
jsr (a3) ; playerTick
rts
jmp (a3) ; playerTick
fw_MusicStop:
clr.l fw_MusicTickRoutine(a6)
move.w #DMAF_AUDIO,dmacon(a5)
; unsupported right now
rts
@ -60,5 +62,5 @@ fw_MusicStop:
;--------------------------------------------------------------------
fw_PretrackerReplayer:
;include "../framework/musicplayers/pretracker_replayer_resourced.asm"
incbin "../framework/musicplayers/pretracker_replayer_binary_blob.bin"
;include "musicplayers/pretracker_replayer_resourced.asm"
incbin "musicplayers/pretracker_replayer_binary_blob.bin"

View File

@ -5,16 +5,38 @@
fail "FW_DYNAMIC_MEMORY_SUPPORT must be enabled"
ENDC
IF (FW_MUSIC_PLAYER_CHOICE==6)
IFND FW_PRETRACKER_JITTER_BUFFER_SIZE
FW_PRETRACKER_JITTER_BUFFER_SIZE = 38*4 ; default is 37 insts + end of copperlist
ENDC
IFND FW_PRETRACKER_NUM_JITTER_BUFFERS
FW_PRETRACKER_NUM_JITTER_BUFFERS = 50
ENDC
ENDC
fw_MusicAlloc:
move.l #pv_SIZEOF+sv_SIZEOF,d0
bsr fw_AllocFast
move.l a0,fw_PretrackerMyPlayer(a6)
lea pv_SIZEOF(a0),a0
move.l a0,fw_PretrackerMySong(a6)
IF (FW_MUSIC_PLAYER_CHOICE==6)
move.l #FW_PRETRACKER_NUM_JITTER_BUFFERS*FW_PRETRACKER_JITTER_BUFFER_SIZE,d0
bsr fw_AllocChip
move.l a0,fw_PretrackerCopperlistStart(a6)
move.l a0,fw_PretrackerCopperWritePtr(a6)
lea (FW_PRETRACKER_NUM_JITTER_BUFFERS-1)*FW_PRETRACKER_JITTER_BUFFER_SIZE(a0),a0
move.l a0,fw_PretrackerCopperReadPtr(a6)
lea FW_PRETRACKER_JITTER_BUFFER_SIZE(a0),a0
move.l a0,fw_PretrackerCopperlistEnd(a6)
move.l #ft_SIZEOF,d0
bsr fw_AllocFast
move.l a0,fw_PretrackerBgTask(a6)
ENDC
rts
fw_MusicInit:
PUTMSG 10,<"%d: Pretracker song init %p %p">,fw_FrameCounterLong(a6),a0,a1
PUTMSG 10,<"%d: Pretracker song init %p %p">,fw_FrameCounter-2(a6),a0,a1
move.l a0,a2
PUSHM d4-d7/a1/a4-a6
;move.l fw_PretrackerMyPlayer(a6),a0 ; unused
@ -31,7 +53,7 @@ fw_MusicInit:
move.l a0,a1
.noalloc
PUTMSG 10,<"%d: Pretracker player init">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Pretracker player init">,fw_FrameCounter-2(a6)
move.l fw_PretrackerMyPlayer(a6),a0
move.l fw_PretrackerMySong(a6),a2
lea fw_PretrackerProgress(a6),a3
@ -41,31 +63,92 @@ fw_MusicInit:
bsr pre_PlayerInit
POPM
PUTMSG 10,<"%d: Pretracker init done">,fw_FrameCounterLong(a6)
IF (FW_MUSIC_PLAYER_CHOICE==6)
move.l fw_PretrackerBgTask(a6),a1
move.b #20,LN_PRI(a1)
lea fw_PretrackerAheadTask(pc),a0
bsr fw_AddTask
ENDC
lea fw_MusicPlay(pc),a0
move.l a0,fw_MusicTickRoutine(a6)
PUTMSG 10,<"%d: Pretracker init done">,fw_FrameCounter-2(a6)
rts
IF (FW_MUSIC_PLAYER_CHOICE==6)
fw_PretrackerAheadTask:
move.l fw_PretrackerCopperWritePtr(a6),a1
.loop
move.l a1,fw_PretrackerCopperWritePtr(a6)
move.l fw_PretrackerMyPlayer(a6),a0
PUSHM a1/a5/a6
bsr pre_PlayerTick
POPM
lea FW_PRETRACKER_JITTER_BUFFER_SIZE(a1),a1
cmp.l fw_PretrackerCopperlistEnd(a6),a1
bne.s .nowrap
move.l fw_PretrackerCopperlistStart(a6),a1
.nowrap
.retry
cmp.l fw_PretrackerCopperReadPtr(a6),a1
bne.s .loop
bsr fw_Yield
bra.s .retry
fw_MusicPlay:
move.l fw_PretrackerCopperReadPtr(a6),a1
lea FW_PRETRACKER_JITTER_BUFFER_SIZE(a1),a1
cmp.l fw_PretrackerCopperlistEnd(a6),a1
bne.s .nowrap
move.l fw_PretrackerCopperlistStart(a6),a1
.nowrap
move.l a1,fw_PretrackerCopperlist(a6)
cmp.l fw_PretrackerCopperWritePtr(a6),a1
bne.s .good
PUTMSG 10,<"Pretracker buffer underflow">
rts
.good move.l a1,fw_PretrackerCopperReadPtr(a6)
rts
fw_MusicStop:
move.l fw_PretrackerBgTask(a6),a1
bsr fw_RemTask
clr.l fw_MusicTickRoutine(a6)
move.w #DMAF_AUDIO,dmacon(a5)
; unsupported right now
rts
ELSE
fw_MusicPlay:
PUSHM d4-d7/a4-a6
move.l fw_PretrackerMyPlayer(a6),a0
IF (FW_MUSIC_PLAYER_CHOICE>=5)
move.l fw_PretrackerCopperlist(a6),a1
ENDC
bsr.s pre_PlayerTick
POPM
rts
fw_MusicStop:
clr.l fw_MusicTickRoutine(a6)
move.w #DMAF_AUDIO,dmacon(a5)
; unsupported right now
rts
ENDC
;--------------------------------------------------------------------
; sets the position if supported
; d0.w = new position
fw_MusicSetPosition:
move.w d0,fw_PretrackerMySong+sv_curr_pat_pos_w(a6)
move.l fw_PretrackerMyPlayer(a6),a0
move.w d0,pv_curr_pat_pos_w(a0)
rts
;--------------------------------------------------------------------
PRETRACKER_COPPER_OUTPUT = FW_MUSIC_PLAYER_CHOICE-4
PRETRACKER_DONT_TRASH_REGS = 0
include "../framework/musicplayers/raspberry_casket.asm"
include "musicplayers/raspberry_casket.asm"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,345 @@
; Pretracker song format description:
;
; $0000 4: PRT<version> ($19/$1a (V0.x), $1b (V1.0), $1e (V1.5))
; $0004 4: File offset to position data (POSD)
; $0008 4: File offset to pattern data (PATT)
; $000C 4: File offset to instruments (INST)
; $0010 4: File offset to waves (WAVE)
; $0014 20: Songname
; $0028 20: Author
; $003C 1: Restart position for song (<=V1.0)
; $003D 1: Number of patterns (<=V1.0)
; $003E 1: Songlength in patterns (<=V1.0)
; $003F 1: Number of steps per pattern (<=V1.0)
; $0040 1: Number of instruments (<=V1.0), $40 for V1.5
; $0041 1: Number of waves
; $0042 24: Wave generation ordering (>=V1.0)
; $005a 1: Number of subsongs (>=V1.5)
; [...]
; Position data (POSD):
; - Per subsong (>=V1.5)
; - 1: Restart pos
; - 1: #patterns
; - 1: #numsteps
; - 1: songlength
; - 4: relative pattern offset in pattern data
; - Positions x 4 x [Pattern number (byte), pitch shift (signed byte)]
;
; Pattern data (PATT):
; Each pattern line consists of three bytes:
; - 1 Bit : Bit 4 of Inst Number
; - 1 Bit : ARP instead of effect
; - 6 Bits: Pitch ($01 is C-0, $3d is NOTE OFF)
;
; - 4 Bits: Bit 0-3 of Inst Number
; - 4 Bits: Effect command
; - 8 Bits: Effect data
; - Patterns x steps x 3 bytes
;
; Unknown data after pattern data: (12 10 00 00 00 00)
;
; Instrument definitions (INST):
; - 32 (!) x Null terminated string (or 23 chars max) (for V1.5 this is 64 strings)
; - For each instrument: Instrument Info (ININ)
; - $00 1: Vibrato Delay
; - $01 1: Vibrato Depth
; - $02 1: Vibrato Speed (-1)
; - $03 1: ADSR Attack
; - $04 1: ADSR Decay
; - $05 1: ADSR Sustain
; - $06 1: ADSR Release
; - $07 1: Number of Inst Pattern steps
;
; - For each instrument:
; - 1 Byte: number of steps
; - 3 Bytes x number of steps: Inst Pattern (IPTT)
;
; Inst pattern data (IPTT):
; Each pattern line consists of three bytes:
; - 1 Bit : Next note stitched to this one
; - 1 Bit : Fixed Pitch Note
; - 6 Bits : Pitch ($01 is C-0)
; - 4 Bits : unused?
; - 12 Bits: Effect
;
; Wave definitions (WAVE):
; - 24 (!) x Null terminated string (or 23 chars max)
; - Optional padding to even address, if necessary
; - For each wave:
; - 42 Bytes: Wave info structure (see definition below)
; ----------------------------------------
; Some constants for clarity
MAX_VOLUME = $40
MAX_SPEED = $2f
MAX_WAVES = 24
MAX_INSTRUMENTS = 32
MAX_TRACK_DELAY = 32
NOTE_OFF_PITCH = $3d
NOTES_IN_OCTAVE = 12
NUM_CHANNELS = 4 ; yes, you can reduce the number of channels if you want
; ----------------------------------------
; Pretracker file structures
; Pattern data (PATT and IPTT)
pdb_pitch_ctrl = 0
pdb_inst_effect = 1 ; for normal pattern data
pdb_effect_cmd = 1 ; for inst pattern
pdb_effect_data = 2
; Pattern pos data (POSD)
ppd_pat_num = 0
ppd_pat_shift = 1
; Instrument Info (ININ)
ii_vibrato_delay = 0
ii_vibrato_depth = 1
ii_vibrato_speed = 2
ii_adsr_attack = 3
ii_adsr_decay = 4
ii_adsr_sustain = 5
ii_adsr_release = 6
ii_pattern_steps = 7
ii_SIZEOF = 8
; Wave Info (WAVE)
wi_loop_start_w = $00
wi_loop_end_w = $02
wi_subloop_len_w = $04
wi_allow_9xx_b = $06 ; 0x00 / 0x01
wi_subloop_wait_b = $07
wi_subloop_step_w = $08
wi_chipram_w = $0a
wi_loop_offset_w = $0c
wi_chord_note1_b = $0e
wi_chord_note2_b = $0f
wi_chord_note3_b = $10
wi_chord_shift_b = $11
wi_clone_wave_b = $12 ; only used by tracker itself
wi_osc_phase_spd_b = $13
wi_flags_b = $14 ; bit 0/1: osc type, bit 2: needs extra octaves, bit 3: boost, bit 4: pitch linear, bit 5: vol fast
wi_osc_phase_min_b = $15
wi_osc_phase_max_b = $16
wi_osc_basenote_b = $17
wi_osc_gain_b = $18
wi_sam_len_b = $19 ; in multiples of 128, zero-based (0 == 128)
wi_mix_wave_b = $1a
wi_vol_attack_b = $1b
wi_vol_delay_b = $1c
wi_vol_decay_b = $1d
wi_vol_sustain_b = $1e
wi_flt_type_b = $1f ; 1=lowpass, 2=highpass, 3=bandpass, 4=notch
wi_flt_resonance_b = $20
wi_pitch_ramp_b = $21
wi_flt_start_b = $22
wi_flt_min_b = $23
wi_flt_max_b = $24
wi_flt_speed_b = $25
wi_mod_params_l = $26
wi_mod_wetness_b = $26
wi_mod_length_b = $27
wi_mod_predelay_b = $28
wi_mod_density_b = $29 ; (1-7), unisono (bits 3/4) and post bit 5
wi_SIZEOF = $2a
; ----------------------------------------
; Unpacked Instrument Info (addition to player for faster processing)
rsreset
uii_vibrato_delay rs.w 1
uii_vibrato_depth rs.w 1
uii_vibrato_speed rs.w 1
uii_adsr_release rs.b 1
rs.b 1 ; dummy
uii_adsr_attack rs.w 1
uii_adsr_decay rs.w 1
uii_adsr_sustain rs.w 1
uii_pattern_steps rs.b 1
rs.b 1 ; padding
uii_SIZEOF rs.b 0
; ----------------------------------------
; MySong offsets
rsreset
sv_waveinfo_table rs.l MAX_WAVES ; 24 pointers to wave infos to avoid mulu
sv_inst_patterns_table rs.l MAX_INSTRUMENTS ; 32 pointers to pattern data
; --- 127 byte displacement limit ---
sv_wavelength_table rs.l MAX_WAVES ; 24 longwords to sample lengths (standard octave) (NEW)
sv_wavetotal_table rs.l MAX_WAVES ; 24 longwords to sample lengths for all octaves (NEW)
sv_wavegen_order_table rs.b MAX_WAVES ; 24 bytes
sv_num_waves_b rs.b 1
sv_num_steps_b rs.b 1
sv_pat_pos_len_w rs.w 1 ; only byte used
sv_pat_restart_pos_w rs.w 1 ; only byte used
sv_pos_data_adr rs.l 1
sv_waveinfo_ptr rs.l 1 ; base pointer of wave info
sv_inst_infos_table rs.b MAX_INSTRUMENTS*uii_SIZEOF
sv_pattern_table rs.l 256
sv_SIZEOF rs.b 0
; ----------------------------------------
; channel output data (part of pcd structure below) -- FIXED ORDER!
rsreset
ocd_sam_ptr rs.l 1 ; 0
ocd_length rs.w 1 ; 4
ocd_loop_offset rs.w 1 ; 6
ocd_period rs.w 1 ; 8
ocd_volume rs.b 1 ; 10
ocd_trigger rs.b 1 ; 11 needs to be after volume
ocd_unused rs.l 1 ; 12 unused, but makes the structure an even 16 bytes
ocd_SIZEOF rs.b 0
; channel structure (part of pv structure)
rsreset
; DO NOT CHANGE ORDER -- OPTIMIZED CLEARING
pcd_pat_portamento_dest_w rs.w 1 ; portamento destination pitch
pcd_pat_pitch_slide_w rs.w 1
pcd_pat_vol_ramp_speed_b rs.b 1
pcd_pat_2nd_inst_num4_b rs.b 1
pcd_pat_2nd_inst_delay_b rs.b 1
pcd_wave_offset_b rs.b 1
pcd_inst_pitch_slide_w rs.w 1
pcd_inst_sel_arp_note_w rs.w 1
pcd_inst_note_pitch_w rs.w 1
pcd_inst_curr_port_pitch_w rs.w 1
pcd_inst_line_ticks_b rs.b 1
pcd_inst_pitch_pinned_b rs.b 1
pcd_inst_vol_slide_b rs.b 1
pcd_inst_step_pos_b rs.b 1
pcd_inst_wave_num4_w rs.w 1 ; current wave number (1 based, times 4) (lower byte used)
pcd_track_delay_offset_b rs.b 1 ; $ff = no track delay
pcd_inst_speed_stop_b rs.b 1 ; speed byte, $ff stops processing
pcd_inst_pitch_w rs.w 1
pcd_inst_vol_w rs.w 1
pcd_loaded_inst_vol_b rs.b 1
pcd_pat_vol_b rs.b 1 ; Multiplied with volume of instrument.
; DO NOT CHANGE ORDER -- OPTIMIZED CLEARING END
pcd_arp_notes_l rs.b 0
pcd_arp_note_1_b rs.b 1
pcd_arp_note_2_b rs.b 1
pcd_arp_note_3_b rs.b 1
rs.b 1 ; gets cleared
pcd_last_trigger_length_w rs.w 1 ; I think this makes sure that we trigger the note if the length changes
pcd_last_wave_was_looping_b rs.b 1 ; -1 if the last wave was a looping one so no-sync is actually allowed
pcd_wave_nosync rs.b 1 ; For Presto (otherwise padding): Store if the wave currently uses nosync or not
pcd_pat_portamento_speed_b rs.b 1
pcd_pat_adsr_rel_delay_b rs.b 1 ; counts down until adsr release. Seems unused?
pcd_note_off_delay_b rs.b 1 ; time before note is released ($ff = disabled)
pcd_inst_pattern_steps_b rs.b 1 ; number of steps in instrument pattern
pcd_note_delay_b rs.b 1 ; $ff = no note delay
pcd_track_delay_steps_b rs.b 1 ; $00 = no track delay, $xx = track delay xx (this is for the next channel!)
pcd_track_delay_vol16_b rs.b 1 ; needs to be at even address (using word access to shift << 8)
pcd_track_init_delay_b rs.b 1 ; number of frames to ignore the delay
pcd_inst_num4_w rs.w 1 ; current instrument number * 4
pcd_inst_wave_ptr rs.l 1
pcd_inst_subloop_wait_w rs.w 1
pcd_inst_loop_offset_w rs.w 1
pcd_inst_info_ptr rs.l 1 ; pointer to currently active instrument
pcd_waveinfo_ptr rs.l 1 ; pointer to currently active waveinfo
pcd_channel_mask_b rs.b 1
pcd_channel_num_b rs.b 1
pcd_adsr_phase_w rs.w 1 ; 0=attack, 1=decay, 2=sustain, 3=release ! do not change order
pcd_adsr_volume_w rs.w 1 ; 0 for restart / $400 (word only) ! do not change order
pcd_adsr_phase_speed_b rs.b 1
pcd_inst_ping_pong_dir_b rs.b 1 ; direction of ping-pong (-1 == $00 / +1 = $ff)
pcd_adsr_pos_w rs.w 1 ; pos in adsr curve
pcd_adsr_vol64_w rs.w 1 ; some adsr volume
pcd_new_inst_num_b rs.b 1 ; load new instrument (number) ! do not change order
rs.b 1 ; gets cleared
pcd_vibrato_pos_w rs.w 1 ;
pcd_vibrato_delay_w rs.w 1 ; is a byte value ! do not change order
pcd_vibrato_depth_w rs.w 1 ; is a byte value ! do not change order
pcd_vibrato_speed_w rs.w 1 ; is a byte value ! do not change order
pcd_adsr_release_b rs.b 1 ; is a byte value ! do not change order
rs.b 1 ; padding will be overwritten!
pcd_out_base rs.b ocd_SIZEOF
pcd_track_delay_buffer rs.b MAX_TRACK_DELAY*ocd_SIZEOF
pcd_SIZEOF rs.b 0
pcd_out_ptr_l = pcd_out_base+ocd_sam_ptr
pcd_out_len_w = pcd_out_base+ocd_length
pcd_out_lof_w = pcd_out_base+ocd_loop_offset
pcd_out_per_w = pcd_out_base+ocd_period
pcd_out_vol_b = pcd_out_base+ocd_volume
pcd_out_trg_b = pcd_out_base+ocd_trigger
pcd_out_unused_l = pcd_out_base+ocd_unused ; copied for track delay, but not used?
rsreset
owb_saw_waves rs.b 128
owb_sqr_waves rs.b 128
owb_tri_waves rs.b 128
owb_SIZEOF rs.b 0
; ----------------------------------------
; MyPlayer global variables (not bound to channel)
rsreset
; DO NOT CHANGE ORDER -- OPTIMIZED INIT
pv_pat_curr_row_b rs.b 1 ; current step
pv_next_pat_row_b rs.b 1
pv_next_pat_pos_b rs.b 1
pv_pat_speed_even_b rs.b 1 ; even shuffle speed
pv_pat_speed_odd_b rs.b 1 ; odd shuffle speed
pv_pat_line_ticks_b rs.b 1
pv_pat_stopped_b rs.b 1 ; 0 = stop, $ff = run
pv_songend_detected_b rs.b 1
; DO NOT CHANGE ORDER -- OPTIMIZED INIT END
pv_curr_pat_pos_w rs.w 1 ; only byte used
pv_loop_pattern_b rs.b 1 ; repeat current pattern, do not advance
rs.b 1 ; padding
pv_trigger_mask_w rs.w 1
pv_my_song rs.l 1
pv_copperlist_ptr rs.l 1
pv_wave_sample_table rs.l MAX_WAVES ; 24 pointers to sample starts
pv_period_table rs.w 16*NOTES_IN_OCTAVE*3
; --- 127 byte displacement limit ---
pv_sample_buffer_ptr rs.l 1 ; pointer to start of sample buffer
pv_stop_len_lof rs.l 1 ; $0002 / $0000
pv_stop_per_vol_trg rs.l 1 ; $007b / $00 / $00
pv_channeldata rs.b NUM_CHANNELS*pcd_SIZEOF
IFNE PRETRACKER_VOLUME_TABLE
pv_osc_buffers rs.b 0 ; reuse space of volume_table, which is bigger than NOTES_IN_OCTAVE*owb_SIZEOF
pv_volume_table rs.b (MAX_VOLUME+1)*MAX_VOLUME*2
ELSE
pv_osc_buffers rs.b NOTES_IN_OCTAVE*owb_SIZEOF
ENDC
pv_precalc_sample_size rs.l 1
pv_precalc_progress_ptr rs.l 1
pv_wg_wave_counter_w rs.w 1
IFNE PRETRACKER_PARANOIA_MODE ; same wave for mixing cannot be selected in Pretracker
pv_wg_curr_wave_num_b rs.b 1
rs.b 1
ENDC
pv_wg_curr_sample_ptr rs.l 1
pv_wg_curr_samend_ptr rs.l 1
pv_wg_curr_sample_len_l rs.w 1
pv_wg_curr_sample_len_w rs.w 1
pv_wg_chord_note_num_b rs.b 1 ; don't change order
pv_wg_unisono_run_b rs.b 1 ; don't change order
pv_wg_chord_flag_w rs.w 1
pv_wg_chord_pitches rs.l 1
pv_wg_osc_speed_l rs.l 1
pv_wg_flt_taps rs.w 4
pv_SIZEOF rs.b 0

File diff suppressed because it is too large Load Diff

View File

@ -22,9 +22,9 @@ FASTMEM_SIZE = 4
move.l a0,fw_DemoAbortStackPointer(a6)
ENDC
PUTMSG 10,<"%d: Entrypoint: %p">,fw_FrameCounterLong(a6),#entrypoint
PUTMSG 10,<"%d: Entrypoint: %p">,fw_FrameCounter-2(a6),#entrypoint
bsr entrypoint
PUTMSG 10,<"%d: Part terminated">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Part terminated">,fw_FrameCounter-2(a6)
bra os_AppShutdown
@ -39,6 +39,21 @@ os_AppInit:
ENDC
move.l 4.w,a6
IF DEBUG_DETAIL
move.l #MEMF_CHIP,d1
CALL AvailMem
PUTMSG 10,<"Chip memory free: %ld bytes">,d0
move.l #MEMF_CHIP|MEMF_LARGEST,d1
CALL AvailMem
PUTMSG 10,<"Chip memory largest: %ld bytes">,d0
move.l #MEMF_FAST,d1
CALL AvailMem
PUTMSG 10,<"Fast memory free: %ld bytes">,d0
move.l #MEMF_FAST|MEMF_LARGEST,d1
CALL AvailMem
PUTMSG 10,<"Fast memory largest: %ld bytes">,d0
ENDC
IFEQ FW_HD_TRACKMO_MODE
IFD pd_SIZEOF
move.l #pd_SIZEOF,d0
@ -220,7 +235,7 @@ os_AppInit:
IF FW_DYNAMIC_MEMORY_SUPPORT
IF FW_MUSIC_SUPPORT
IF (FW_MUSIC_PLAYER_CHOICE==4)||(FW_MUSIC_PLAYER_CHOICE==5)
IF (FW_MUSIC_PLAYER_CHOICE>=4)&&(FW_MUSIC_PLAYER_CHOICE<=6)
bsr fw_MusicAlloc
ENDC
ENDC
@ -230,7 +245,7 @@ os_AppInit:
ELSE ; FW_DYNAMIC_MEMORY_SUPPORT
IF FW_MUSIC_SUPPORT
IF (FW_MUSIC_PLAYER_CHOICE==4)||(FW_MUSIC_PLAYER_CHOICE==5)
IF (FW_MUSIC_PLAYER_CHOICE>=4)&&(FW_MUSIC_PLAYER_CHOICE<=6)
bsr fw_MusicAlloc
bsr fw_PushMemoryState
ENDC
@ -299,8 +314,15 @@ os_AppInit:
lea $dff000,a5
exg a4,a6 ; from now on, a6 is supposed to be our framework pointer, a5 is _custom
move.l a0,fw_VBR(a6)
IF FW_SOFT_IRQ_SUPPORT
move.l $64(a0),fw_OldSystemSoftIRQ(a6)
ENDC
move.l $6c(a0),fw_OldSystemVBlankIRQ(a6)
IF FW_AUDIO_IRQ_SUPPORT
move.l $70(a0),fw_OldSystemAudioIRQ(a6)
ENDC
move.w #$7fff,d4
move.w intenar(a5),d0
move.w d4,intena(a5)
@ -388,7 +410,13 @@ os_AppShutdown:
move.w d0,adkcon(a5)
move.l fw_VBR(a6),a0
IF FW_SOFT_IRQ_SUPPORT
move.l fw_OldSystemSoftIRQ(a6),$64(a0)
ENDC
move.l fw_OldSystemVBlankIRQ(a6),$6c(a0)
IF FW_AUDIO_IRQ_SUPPORT
move.l fw_OldSystemAudioIRQ(a6),$70(a0)
ENDC
movea.l fw_GfxBase(a6),a0 ; graphics.library
move.l $26(a0),cop1lc(a5)

View File

@ -143,7 +143,7 @@ trackmo_AppInit:
bsr fw_InitDos
IF FW_MUSIC_SUPPORT
IF (FW_MUSIC_PLAYER_CHOICE==4)||(FW_MUSIC_PLAYER_CHOICE==5)
IF (FW_MUSIC_PLAYER_CHOICE>=4)&&(FW_MUSIC_PLAYER_CHOICE<=6)
bsr fw_MusicAlloc
ENDC
ENDC

View File

@ -61,7 +61,7 @@ DEBUG_DETAIL SET 10
NEWAGE_DEBUG = 1
include "../framework/framework.i"
include "framework.i"
; Memory use:
@ -109,7 +109,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -945,22 +945,22 @@ gth_extra_copperlist_ptr:
COP_END
gth_meanwhile_text:
incbin "../data/gotham/meanwhile320x18x4.BPL"
incbin "data/gotham/meanwhile320x18x4.BPL"
gth_gothamcity_text:
incbin "../data/gotham/gothamcity320x23x4.BPL"
incbin "data/gotham/gothamcity320x23x4.BPL"
gth_gotham_text:
incbin "../data/gotham/gotham320x23x4.BPL"
incbin "data/gotham/gotham320x23x4.BPL"
gth_hameelinna_text:
incbin "../data/gotham/hameelinna320x23x4.BPL"
incbin "data/gotham/hameelinna320x23x4.BPL"
gth_ham_text:
incbin "../data/gotham/ham320x23x4.BPL"
incbin "data/gotham/ham320x23x4.BPL"
gth_ham_tech:
incbin "../data/gotham/hamtechnology320x13x4.BPL"
incbin "data/gotham/hamtechnology320x13x4.BPL"
blitter_temp_output_word:
dc.w 0
@ -968,7 +968,7 @@ blitter_temp_output_word:
IFND FW_DEMO_PART
section "gth_sample",data,chip
gth_psenough_ham:
incbin "../data/gotham/hamtechnology.raw"
incbin "data/gotham/hamtechnology.raw"
ENDC
END

View File

@ -97,7 +97,7 @@ NEWAGE_DEBUG = 1
; - FAST BSS 32 x 1424 = 45568 (Cube preprocessing) 12+3*3*2*2+8*3*2+8*2*2+12*(11*4+4+8*2)
include "../framework/framework.i"
include "framework.i"
STRUCTURE BQLine,bq_SIZEOF
ULONG bql_BltCon01
@ -228,7 +228,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -410,7 +410,7 @@ gou_intro:
lea .script(pc),a0
CALLFW InstallMusicScript
PUTMSG 10,<"Main Frame Start %ld">,fw_FrameCounterLong(a6)
PUTMSG 10,<"Main Frame Start %ld">,fw_FrameCounter-2(a6)
.loop
BLTWAIT
@ -881,7 +881,7 @@ gou_flip_cube_buffer:
;--------------------------------------------------------------------
gou_async_calc_task:
PUTMSG 10,<"%d: async_calc_task">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: async_calc_task">,fw_FrameCounter-2(a6)
move.l pd_CubeDataPtr(a6),a1
moveq.l #CUBE_PRECALC_NUM-1,d7
.cdloop
@ -1252,7 +1252,7 @@ ZEROIPOL MACRO
;--------------------------------------------------------------------
; a1 = cubedata
gou_interpolate_outer_cube_lines:
PUTMSG 20,<"%d: ----- gou_interpolate_outer_cube_lines">,fw_FrameCounterLong(a6)
PUTMSG 20,<"%d: ----- gou_interpolate_outer_cube_lines">,fw_FrameCounter-2(a6)
move.w cd_LinesToDraw(a1),d7
sub.w cd_InnerLines(a1),d7
bne.s .cont
@ -1961,7 +1961,7 @@ LINEIPOL MACRO
;--------------------------------------------------------------------
; a1 = cubedata
gou_interpolate_inner_cube_lines:
PUTMSG 20,<"%d: ----- gou_interpolate_inner_cube_lines">,fw_FrameCounterLong(a6)
PUTMSG 20,<"%d: ----- gou_interpolate_inner_cube_lines">,fw_FrameCounter-2(a6)
move.w cd_InnerLines(a1),d7
bne.s .cont
rts
@ -2994,7 +2994,7 @@ gou_extra_copperlist_ptr:
COP_END
gou_bendit_sprite:
incbin "../data/gouraud/bendit128x128x4.SPR"
incbin "data/gouraud/bendit128x128x4.SPR"
blitter_temp_output_word:
dc.w 0
@ -3003,11 +3003,11 @@ blitter_temp_output_word:
IFD ENABLE_PART_MUSIC
section "part_music_samples",data,chip ; section for music playback
part_music_smp:
incbin "../data/music/dsr_68k_tune_2_v11.lsbank"
incbin "data/music/dsr_68k_tune_2_v11.lsbank"
section "part_music_data",data ; section for music playback
part_music_data:
incbin "../data/music/dsr_68k_tune_2_v11.lsmusic"
incbin "data/music/dsr_68k_tune_2_v11.lsmusic"
ENDC
ENDC
END

View File

@ -93,9 +93,9 @@ copy "..\data\endpart\screenshots_320x1620.BPL" build
rem ############ ASSEMBLE FRAMEWORK AND BOOTBLOCK ############
copy "..\tools\vc.cfg" %~dp0
..\tools\vasmm68k_mot -m68010 -Fbin -phxass -o "build\trackmo_launcher" -I"%~dp0\..\includes" "trackmo_launcher.asm"
..\tools\vasmm68k_mot -m68010 -Fbin -phxass -o "build\trackmo_launcher" -I"%~dp0\..\framework" -I"%~dp0\..\includes" "trackmo_launcher.asm"
@if %ERRORLEVEL% NEQ 0 goto failed
..\tools\vasmm68k_mot -m68000 -Fbin -phxass -o "build\bootblock" -I"%~dp0\..\includes" "..\framework\bootblock.asm"
..\tools\vasmm68k_mot -m68000 -Fbin -phxass -o "build\bootblock" -I"%~dp0\..\includes" -I"%~dp0\..\includes" "..\framework\bootblock.asm"
@if %ERRORLEVEL% NEQ 0 goto failed
rem ############ BUILD DISK ############

View File

@ -6,8 +6,8 @@ NEWAGE_DEBUG = 1 ; enable for UAE warp exit on start with debug detail en
CHIPMEM_SIZE = 469*1024 ; maximum chip memory use for whole demo
FASTMEM_SIZE = 458*1024 ; maximum fast memory use for whole demo
include "../framework/framework.i"
include "../framework/framework.asm"
include "framework.i"
include "framework.asm"
entrypoint:
include "trackmo_script.asm"

View File

@ -1,7 +1,7 @@
opt p+,o+
include "trackmo_settings.i"
include "../framework/framework.i"
include "framework.i"
bsr trackmo_AppInit
@ -11,4 +11,4 @@
.loop bra.s .loop
include "../framework/framework.asm"
include "framework.asm"

View File

@ -18,7 +18,7 @@
;
trackmo:
PUTMSG 10,<"%d: Trackmo start!">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Trackmo start!">,fw_FrameCounter-2(a6)
.restart
btst #6,$bfe001
bne.s .part1

View File

@ -64,7 +64,7 @@ DEBUG_DETAIL SET 10
NEWAGE_DEBUG = 1
include "../framework/framework.i"
include "framework.i"
STRUCTURE PartData,fw_SIZEOF
APTR pd_CurrPlanesPtr
@ -107,7 +107,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -260,7 +260,7 @@ hex_init_shade_table:
;--------------------------------------------------------------------
hex_main:
PUTMSG 10,<"%d: Main part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Main part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #2,copcon(a5) ; enable copper danger (copper controlled blitter)
@ -865,7 +865,7 @@ hex_hexgrid_black_palette:
ENDR
hex_hexgrid_data:
incbin "../data/hexagon/hexagon_reg16x254.EHB"
incbin "data/hexagon/hexagon_reg16x254.EHB"
section "hex_copper",data,chip
@ -887,21 +887,21 @@ hex_extra_copperlist_ptr:
COP_END
hex_winners_sprites:
incbin "../data/hexagon/winners128x128x4.SPR"
incbin "data/hexagon/winners128x128x4.SPR"
IFND FW_DEMO_PART
section "hex_kaleidoscope_texture",data
hex_kaleidoscope_texture:
incbin "../data/hexagon/kaleitc.raw"
incbin "data/hexagon/kaleitc.raw"
IFD ENABLE_PART_MUSIC
section "part_music_samples",data,chip ; section for music playback
part_music_smp:
incbin "../data/music/desire_demo_68k_v6.lsbank"
incbin "data/music/desire_demo_68k_v6.lsbank"
section "part_music_data",data ; section for music playback
part_music_data:
incbin "../data/music/desire_demo_68k_v6.lsmusic"
incbin "data/music/desire_demo_68k_v6.lsmusic"
ENDC
ENDC

View File

@ -115,7 +115,7 @@ DEBUG_DETAIL SET 10
NEWAGE_DEBUG = 1
include "../framework/framework.i"
include "framework.i"
; Chip memory use:
; - CHIP DATA: 256 x 256 x 6 x 3 = 147456 (Pattern/Texture)
@ -319,7 +319,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -676,7 +676,7 @@ kds_fill_noise_buffer:
;--------------------------------------------------------------------
kds_intro:
PUTMSG 10,<"%d: Intro part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Intro part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #420,pd_PartCountDown(a6)
CALLFW SetBlitterQueueSingleFrame
@ -705,7 +705,7 @@ kds_intro:
cmp.w #4032,fw_MusicFrameCount(a6)
blt.s .waitloop
PUTMSG 10,<"%d: Intro part launching (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Intro part launching (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
.loop
bsr kds_flip_db_frame
@ -746,7 +746,7 @@ kds_intro:
;--------------------------------------------------------------------
kds_transition:
PUTMSG 10,<"%d: Transition part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Transition part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
move.w #260,pd_PartCountDown(a6)
CALLFW SetBlitterQueueSingleFrame
@ -822,7 +822,7 @@ kds_transition:
;--------------------------------------------------------------------
kds_dissolve:
PUTMSG 10,<"%d: Dissolve part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Dissolve part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
CALLFW SetBlitterQueueSingleFrame
@ -870,7 +870,7 @@ kds_dissolve:
;--------------------------------------------------------------------
kds_pre_main:
PUTMSG 10,<"%d: Pre Main part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Pre Main part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
CALLFW SetBlitterQueueMultiFrame
move.w joy0dat(a5),pd_OldMouseY(a6)
@ -979,11 +979,11 @@ kds_pre_main:
;--------------------------------------------------------------------
kds_post_main:
PUTMSG 10,<"%d: Post Main part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Post Main part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
bsr .prepare
bsr .prepare
PUTMSG 10,<"%d: Prep done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Prep done">,fw_FrameCounter-2(a6)
.loop
bsr kds_flip_db_frame
move.l pd_CurrSpriteStencilPtr(a6),pd_CurrFairySprite(a6)
@ -1020,7 +1020,7 @@ kds_post_main:
bsr kds_update_copper_list_pointers
CALLFW VSyncWithTask
PUTMSG 10,<"%d: Post Main finished (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Post Main finished (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
rts
@ -1049,7 +1049,7 @@ kds_post_main:
;--------------------------------------------------------------------
kds_main:
PUTMSG 10,<"%d: Main part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Main part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
CALLFW SetBlitterQueueMultiFrame
IF 0
@ -6211,7 +6211,7 @@ kds_bright_transition_palette:
dc.w $68c,$68c,$9f4,$9f4,$fff,$fff,$ffc,$ffc
kds_fairy_sprite_palette:
incbin "../data/kaleidoscope/fairy1_48x51x16.PAL"
incbin "data/kaleidoscope/fairy1_48x51x16.PAL"
; Points
kds_fairy_points:
@ -6312,22 +6312,22 @@ kds_extra_copperlist_ptr:
COP_END
kds_fairy_body1:
incbin "../data/kaleidoscope/fairy1_48x51x16.BPL"
incbin "data/kaleidoscope/fairy1_48x51x16.BPL"
kds_fairy_body2:
incbin "../data/kaleidoscope/fairy2_48x51x16.BPL"
incbin "data/kaleidoscope/fairy2_48x51x16.BPL"
kds_fairy_body3:
incbin "../data/kaleidoscope/fairy3_48x51x16.BPL"
incbin "data/kaleidoscope/fairy3_48x51x16.BPL"
kds_puff_sprite1:
incbin "../data/kaleidoscope/puff1_32x15x16.BPL"
incbin "data/kaleidoscope/puff1_32x15x16.BPL"
kds_puff_sprite2:
incbin "../data/kaleidoscope/puff2_32x15x16.BPL"
incbin "data/kaleidoscope/puff2_32x15x16.BPL"
kds_puff_sprite3:
incbin "../data/kaleidoscope/puff3_32x15x16.BPL"
incbin "data/kaleidoscope/puff3_32x15x16.BPL"
kds_puff_sprite4:
incbin "../data/kaleidoscope/puff4_32x15x16.BPL"
incbin "data/kaleidoscope/puff4_32x15x16.BPL"
kds_kaleidoscope_pattern:
incbin "../data/kaleidoscope/plt_neuro2_ham.raw"
incbin "data/kaleidoscope/plt_neuro2_ham.raw"
blitter_temp_output_word:
dc.w 0
@ -6336,11 +6336,11 @@ blitter_temp_output_word:
IFD ENABLE_PART_MUSIC
section "part_music_samples",data,chip ; section for music playback
part_music_smp:
incbin "../data/music/desire_demo_68k_v6.lsbank"
incbin "data/music/desire_demo_68k_v6.lsbank"
section "part_music_data",data ; section for music playback
part_music_data:
incbin "../data/music/desire_demo_68k_v6.lsmusic"
incbin "data/music/desire_demo_68k_v6.lsmusic"
ENDC
ENDC

View File

@ -81,7 +81,7 @@ DEBUG_DETAIL SET 10
NEWAGE_DEBUG = 1
include "../framework/framework.i"
include "framework.i"
; Memory use:
@ -151,7 +151,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -188,9 +188,9 @@ entrypoint:
IFD FW_DEMO_PART
move.l fw_GlobalUserData(a6),a0
move.l pd_HamphreyBuffer(a6),a1
PUTMSG 10,<"%d: Decrunching from %p to %p">,fw_FrameCounterLong(a6),a0,a1
PUTMSG 10,<"%d: Decrunching from %p to %p">,fw_FrameCounter-2(a6),a0,a1
CALLFW DecompressZX0
PUTMSG 10,<"%d: Image decrunched until %p">,fw_FrameCounterLong(a6),a1
PUTMSG 10,<"%d: Image decrunched until %p">,fw_FrameCounter-2(a6),a1
clr.l fw_GlobalUserData(a6)
ENDC
bsr sth_create_curtain
@ -284,9 +284,9 @@ sth_init_vars:
sth_intro:
IFD FW_DEMO_PART
PUTMSG 10,<"%d: Intro part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Intro part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
ELSE
PUTMSG 10,<"%d: Intro part started">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Intro part started">,fw_FrameCounter-2(a6)
move.w #400,pd_PartCountDown(a6)
ENDC
@ -312,9 +312,9 @@ sth_intro:
sth_main:
IFD FW_DEMO_PART
PUTMSG 10,<"%d: Main part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Main part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
ELSE
PUTMSG 10,<"%d: Main part started">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Main part started">,fw_FrameCounter-2(a6)
ENDC
move.w #800,pd_PartCountDown(a6)
CALLFW SetBlitterQueueSingleFrame
@ -364,9 +364,9 @@ sth_main:
sth_curtain:
IFD FW_DEMO_PART
PUTMSG 10,<"%d: Curtain part started (%d music frames)">,fw_FrameCounterLong(a6),fw_MusicFrameCount-2(a6)
PUTMSG 10,<"%d: Curtain part started (%d music frames)">,fw_FrameCounter-2(a6),fw_MusicFrameCount-2(a6)
ELSE
PUTMSG 10,<"%d: Curtain part started">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Curtain part started">,fw_FrameCounter-2(a6)
ENDC
move.w #186,pd_PartCountDown(a6)
CALLFW SetBlitterQueueSingleFrame
@ -791,7 +791,7 @@ sth_drop_bars:
sth_create_curtain:
move.l pd_CurtainDataPtr(a6),a0
PUTMSG 10,<"%d: Curtain %p">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: Curtain %p">,fw_FrameCounter-2(a6),a0
move.l #(spr+0*sd_SIZEOF+sd_pos)<<16,d4
move.l #$1fe<<16,d3
@ -862,7 +862,7 @@ sth_create_curtain:
move.l d3,(a0)+
dbra d7,.emptylineloop
PUTMSG 10,<"%d: Curtain done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Curtain done">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
@ -1373,10 +1373,10 @@ sth_scrolltext:
even
sth_curtainsines:
incbin "../data/stham/curtainsine.bin"
incbin "data/stham/curtainsine.bin"
sth_hamphrey_palette:
include "../data/stham/PLT_HAMph_path_2_test08b_ham.pal.asm"
include "data/stham/PLT_HAMph_path_2_test08b_ham.pal.asm"
; https://gradient-blaster-grahambates.vercel.app/?points=cff@0,09a@171&steps=256&blendMode=oklab&ditherMode=errorDiffusion&target=amigaOcs&ditherAmount=55
sth_scroller_gradient:
@ -1721,7 +1721,7 @@ sth_scroller_shift_2_bitmap:
IFND FW_DEMO_PART
sth_hamphrey_pic:
incbin "../data/stham/PLT_HAMph_path_2_test08b_ham.raw"
incbin "data/stham/PLT_HAMph_path_2_test08b_ham.raw"
ENDC
END

View File

@ -1,5 +1,5 @@
-as=vasmm68k_mot -x -maxerrors=50 -m68000 -Fhunk -align -phxass %s -DFW_DEMO_PART=1 -o %s -I"%%VBCC%%/../includes" -quiet
-asv=vasmm68k_mot -x -maxerrors=50 -m68000 -Fhunk -align -phxass %s -DFW_DEMO_PART=1 -o %s -I"%%VBCC%%/../includes"
-as=vasmm68k_mot -x -maxerrors=50 -m68000 -Fhunk -align -phxass %s -DFW_DEMO_PART=1 -o %s -I"%%VBCC%%/../" -I"%%VBCC%%/../framework" -I"%%VBCC%%/../framework/musicplayers" -I"%%VBCC%%/../includes" -quiet
-asv=vasmm68k_mot -x -maxerrors=50 -m68000 -Fhunk -align -phxass %s -DFW_DEMO_PART=1 -o %s -I"%%VBCC%%/../" -I"%%VBCC%%/../framework" -I"%%VBCC%%/../framework/musicplayers" -I"%%VBCC%%/../includes"
-cc=vbccm68k -warn=-1 -maxerrors=50 -dontwarn=168 -dontwarn=81 -c99 %s -o= %s %s -O=%ld -quiet
-ccv=vbccm68k -warn=-1 -maxerrors=50 -dontwarn=168 -dontwarn=81 -c99 %s -o= %s %s -O=%ld
-l2=vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -L"%%VBCC%%/targets/m68k-amigaos/lib" %s %s -o %s

View File

@ -1,11 +1,11 @@
-as=vasmm68k_mot -x -maxerrors=50 -m68000 -showopt -Fhunk -kick1hunks -align -phxass %s -o %s -I"%%VBCC%%/../includes" -quiet
-asv=vasmm68k_mot -x -maxerrors=50 -m68000 -showopt -Fhunk -kick1hunks -align -phxass %s -o %s -I"%%VBCC%%/../includes"
-as=vasmm68k_mot -x -maxerrors=50 -m68000 -showopt -Fhunk -kick1hunks -align -phxass %s -o %s -I"%%VBCC%%/../" -I"%%VBCC%%/../framework" -I"%%VBCC%%/../framework/musicplayers" -I"%%VBCC%%/../includes" -quiet
-asv=vasmm68k_mot -x -maxerrors=50 -m68000 -showopt -Fhunk -kick1hunks -align -phxass %s -o %s -I"%%VBCC%%/../" -I"%%VBCC%%/../framework" -I"%%VBCC%%/../framework/musicplayers" -I"%%VBCC%%/../includes"
-cc=vbccm68k -warn=-1 -maxerrors=50 -dontwarn=168 -dontwarn=81 -c99 %s -o= %s %s -O=%ld -quiet
-ccv=vbccm68k -warn=-1 -maxerrors=50 -dontwarn=168 -dontwarn=81 -c99 %s -o= %s %s -O=%ld
-l2=vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -mrel -L"%%VBCC%%/targets/m68k-amigaos/lib" %s %s -o %s
-l2v=vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -mrel -L"%%VBCC%%/targets/m68k-amigaos/lib" %s %s -o %s -t
-ld=vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -mrel -L"%%VBCC%%/targets/m68k-amigaos/lib" "%%VBCC%%/targets/m68k-amigaos/lib/startup.o" %s %s -lvc -o %s
-ldv=vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -mrel -L"%%VBCC%%/targets/m68k-amigaos/lib" "%%VBCC%%/targets/m68k-amigaos/lib/startup.o" %s %s -lvc -o %s -t
-l2=vlink -bamigahunk -Bstatic -Cvbcc -Z -nostdlib -mrel -L"%%VBCC%%/targets/m68k-amigaos/lib" %s %s -o %s
-l2v=vlink -bamigahunk -Bstatic -Cvbcc -Z -nostdlib -mrel -L"%%VBCC%%/targets/m68k-amigaos/lib" %s %s -o %s -t
-ld=vlink -bamigahunk -Bstatic -Cvbcc -Z -nostdlib -mrel -L"%%VBCC%%/targets/m68k-amigaos/lib" "%%VBCC%%/targets/m68k-amigaos/lib/startup.o" %s %s -lvc -o %s
-ldv=vlink -bamigahunk -Bstatic -Cvbcc -Z -nostdlib -mrel -L"%%VBCC%%/targets/m68k-amigaos/lib" "%%VBCC%%/targets/m68k-amigaos/lib/startup.o" %s %s -lvc -o %s -t
-ldnodb=-S -s -x
-ul=-l%s
-cf=-F%s

View File

@ -93,7 +93,7 @@ DEBUG_DETAIL SET 10
NEWAGE_DEBUG = 1
include "../framework/framework.i"
include "framework.i"
; Process:
;
@ -247,7 +247,7 @@ NEWAGE_DEBUG = 1
LABEL pd_SIZEOF
IFND FW_DEMO_PART
include "../framework/framework.asm"
include "framework.asm"
ENDC
entrypoint:
@ -456,7 +456,7 @@ vgb_init_vars:
vgb_init_cot_table:
move.l fw_CosTable(a6),a1
lea pd_CotTable(a6),a0
PUTMSG 10,<"%d: CotTable %p">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: CotTable %p">,fw_FrameCounter-2(a6),a0
moveq.l #(ROT_ANGLES-1)-1,d7
moveq.l #0,d0
moveq.l #0,d5
@ -466,13 +466,13 @@ vgb_init_cot_table:
move.w d1,(a0)+
addq.l #2*2,a1
dbra d7,.loop
PUTMSG 10,<"%d: CotTable done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: CotTable done">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
vgb_init_modshift_table:
PUTMSG 10,<"%d: Calc modshift table">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Calc modshift table">,fw_FrameCounter-2(a6)
move.l pd_ModShiftDataPtr(a6),a1
move.l pd_XPosBufferPtr(a6),a0
moveq.l #ROT_ANGLES-1,d7
@ -502,14 +502,14 @@ vgb_init_modshift_table:
lea (VGBARS_HEIGHT*2)(a0),a0
subq.w #2,d0
dbra d7,.loop2
PUTMSG 10,<"%d: Calc modshift table done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: Calc modshift table done">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
vgb_init_one_color_change_table:
move.l pd_OneColorChangeTable(a6),a0
PUTMSG 10,<"%d: pd_OneColorChangeTable %p">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: pd_OneColorChangeTable %p">,fw_FrameCounter-2(a6),a0
moveq.l #1,d0
move.w #$f00,d4
move.w #$0f0,d5
@ -558,14 +558,14 @@ vgb_init_one_color_change_table:
.good
addq.w #1,d0
dbra d7,.loop
PUTMSG 10,<"%d: pd_OneColorChangeTable done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: pd_OneColorChangeTable done">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
vgb_init_red_blue_table:
move.l pd_RedBlueTable(a6),a0
PUTMSG 10,<"%d: pd_RedBlueTable %p">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: pd_RedBlueTable %p">,fw_FrameCounter-2(a6),a0
moveq.l #0,d0
move.w #4096-1,d7
.loop
@ -578,14 +578,14 @@ vgb_init_red_blue_table:
move.b d2,(a0)+
addq.w #1,d0
dbra d7,.loop
PUTMSG 10,<"%d: pd_RedBlueTable done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: pd_RedBlueTable done">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
vgb_init_diff_table:
move.l pd_DiffTable(a6),a0
PUTMSG 10,<"%d: pd_DiffTable %p">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: pd_DiffTable %p">,fw_FrameCounter-2(a6),a0
add.l #$10000,a0
move.w #256-1,d7
.oloop
@ -614,7 +614,7 @@ vgb_init_diff_table:
move.b d4,-(a0)
dbra d6,.loop
dbra d7,.oloop
PUTMSG 10,<"%d: pd_DiffTable done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: pd_DiffTable done">,fw_FrameCounter-2(a6)
rts
.takelow
move.b d3,-(a0)
@ -626,7 +626,7 @@ vgb_init_diff_table:
vgb_init_mod40_table:
lea pd_Mod40TablePos(a6),a0
PUTMSG 10,<"%d: pd_Mod40TablePos %p">,fw_FrameCounterLong(a6),a0
PUTMSG 10,<"%d: pd_Mod40TablePos %p">,fw_FrameCounter-2(a6),a0
move.l a0,a1
move.w #(VGBARS_WIDTH/8)*VGBARS_PLANES,d2
moveq.l #0,d0
@ -638,7 +638,7 @@ vgb_init_mod40_table:
sub.w d2,d1
move.w d1,-(a1)
dbra d7,.loop
PUTMSG 10,<"%d: pd_Mod40TablePos done">,fw_FrameCounterLong(a6)
PUTMSG 10,<"%d: pd_Mod40TablePos done">,fw_FrameCounter-2(a6)
rts
;--------------------------------------------------------------------
@ -3244,12 +3244,12 @@ vgb_xpos_table:
dc.w 643,687,737,795,862,942,1037,1154,1299,1486,1735,2083,2605,3475,5214,10429
vgb_cat_sprite_palette:
incbin "../data/virgillbars/PLT_Lolcat64x128x16.PAL"
incbin "data/virgillbars/PLT_Lolcat64x128x16.PAL"
incbin "../data/virgillbars/curtainsine.bin"
incbin "data/virgillbars/curtainsine.bin"
vgb_wobble_table:
incbin "../data/virgillbars/curtainsine.bin"
incbin "../data/virgillbars/curtainsine.bin"
incbin "data/virgillbars/curtainsine.bin"
incbin "data/virgillbars/curtainsine.bin"
;********************************************************************
@ -3282,26 +3282,26 @@ vgb_extra_copperlist_ptr:
COP_END
vgb_cat_sprite:
incbin "../data/virgillbars/PLT_Lolcat64x128x16.ASP"
incbin "data/virgillbars/PLT_Lolcat64x128x16.ASP"
vgb_add_of_light_div_sprite:
incbin "../data/virgillbars/additionsprite96x112x4.SPR"
incbin "data/virgillbars/additionsprite96x112x4.SPR"
vgb_light_break_sprite:
incbin "../data/virgillbars/lightbreak128x128x4.SPR"
incbin "data/virgillbars/lightbreak128x128x4.SPR"
vgb_stay_broken_sprite:
incbin "../data/virgillbars/staybroken128x128x4.SPR"
incbin "data/virgillbars/staybroken128x128x4.SPR"
IFND FW_DEMO_PART
IFD ENABLE_PART_MUSIC
section "part_music_samples",data,chip ; section for music playback
part_music_smp:
incbin "../data/music/dsr_68k_tune_2_v11.lsbank"
incbin "data/music/dsr_68k_tune_2_v11.lsbank"
section "part_music_data",data ; section for music playback
part_music_data:
incbin "../data/music/dsr_68k_tune_2_v11.lsmusic"
incbin "data/music/dsr_68k_tune_2_v11.lsmusic"
ENDC
ENDC
END