Compare commits

...

6 Commits
main ... main

Author SHA1 Message Date
124c467c93 Changes to paths accidentally broke harddisk installable version. Fixed. 2024-10-15 19:24:04 +02:00
a535f57e67 Fix. 2024-10-11 20:06:40 +02:00
b1bd046594 Framework fixes:
- Initial memory allocation was using MEMF_LARGEST and did some unnecessary error checking and alignment.
- Trackloader skipped over the MFM gap between the end of the track and the start as optimization.
  However, it turns out that the gap can be smaller when written with non-Amiga controllers or faster
  rotation speeds. Reduced the skip from 300 words to 200 words, so it will work in these cases.
- There was a stupid bug in the trackloader that made the buffer-end detection non-functional.
2024-10-09 00:38:45 +02:00
dd41bf2b6b Added some very important information. 2024-10-07 22:03:23 +02:00
9d109df4cb Minor path fixes and removal of workaround now covered by -Z flag in vc.cfg. 2024-09-16 21:21:33 +02:00
9c48c11cd1 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
2024-09-15 17:43:33 +02:00
45 changed files with 3248 additions and 2614 deletions

View File

@ -47,6 +47,11 @@ You can look at the effects to see how things are done.
But only lamers will copy code verbatim.
Give credits where credits are due.
The PlatOS demo framework (as of Oct '24) has been used in more two winning demos:
- [Inside the Machine](https://www.pouet.net/prod.php?which=98132) by Desire
- [New Art](https://www.pouet.net/prod.php?which=98112) by AttentionWhore
And now go and have some fun. Use the Blitter, Luke! Make Amiga Great Again!
Signing off, Chris 'platon42' Hodges

View File

@ -6,9 +6,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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:
@ -5678,10 +5678,6 @@ bln_greets_lines:
dc.w 0
dc.w 0
IFND FW_DEMO_PART
dc.w 1 ; avoid hunk shortening that leaves dirty memory on kick 1.3
ENDC
;********************************************************************
section "bln_copper",data,chip
@ -5718,32 +5714,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

@ -6,9 +6,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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
@ -3543,10 +3543,6 @@ blb_paint_data:
blb_textpaint_data:
include "textpaint.asm"
IFND FW_DEMO_PART
dc.w 1 ; avoid hunk shortening that leaves dirty memory on kick 1.3
ENDC
;********************************************************************
;--------------------------------------------------------------------
@ -3596,25 +3592,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

@ -5,9 +5,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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
@ -819,13 +819,13 @@ fw_DecodeMfmTrack:
clr.l fw_TrackChecksum(a6)
.decode
.findsyncword
lea MFMBUFSIZE(a1),a2
lea MFMBUFSIZE(a1),a3
.syncloop
PUTMSG 70,<"LW %lx">,(a1)
cmp.w #MFMsync,(a1)+ ; search for a sync word
bne.s .syncloop
PUTMSG 60,<"Sync %lx at %p">,(a1),a1
cmp.l a1,a2 ; check for end of buffer
cmp.l a1,a3 ; check for end of buffer
beq .diskerror ; no more sync found
cmp.b (a1),d3 ; search for 0-nibble
bne.s .syncloop
@ -869,11 +869,20 @@ fw_DecodeMfmTrack:
cmp.b #1,d4
bne.s .nogapskip
PUTMSG 60,<"Skipping much of gap after decoding">
lea 300*2(a2),a2 ; gap of 300 words should be safe (340 is about normal)
; a gap of 300 words should be safe (340 is about normal),
; HOWEVER some drives (Greaseweazle?) may write with 2µs pulse length
; instead of the Amiga's 1.97356µs or faster rotational speeds,
; so the gap may become smaller!
; This broke some configurations apparently. Sorry.
lea 200*2(a2),a2 ; skip 200 words
.nogapskip
lea 6(a2),a1
cmp.w #(1<<11)-1,d7
bne .findsyncword ; decode until the bitmap is complete
beq .allsecsfound ; decode until the bitmap is complete
lea 6(a2),a1
cmp.l a1,a3 ; check for past end of buffer
bhi .findsyncword ; continue seeking sync word
bra .diskerror ; ooops, we're past the end of the buffer
.allsecsfound
PUTMSG 50,<"Track Checksum %lx">,fw_TrackChecksum(a6)
tst.l fw_TrackChecksum(a6) ; track total chksum OK?
bne .diskerror ; no, then retry
@ -881,7 +890,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

@ -40,7 +40,7 @@ trackmo_AppInit:
CALL AvailMem
move.l d0,d2
beq.s .nofast
move.l #(MEMF_LARGEST|MEMF_FAST|MEMF_CLEAR),d1
move.l #MEMF_FAST|MEMF_CLEAR,d1
CALL AllocMem
move.l d0,fw_FastMemStack(a4)
bne.s .goodmem
@ -51,20 +51,15 @@ trackmo_AppInit:
move.l #(MEMF_LARGEST|MEMF_CHIP),d1
CALL AvailMem
move.l d0,d2
beq.s .memerr
move.l #(MEMF_CHIP|MEMF_CLEAR),d1
CALL AllocMem
addq.l #7,d0
and.w #-8,d0
move.l d0,fw_ChipMemStack(a4)
and.w #-8,d2
add.l d2,d0
move.l d0,fw_ChipMemStackEnd(a4)
move.l #(MEMF_LARGEST|MEMF_ANY),d1
CALL AvailMem
move.l d0,d2
beq.s .memerr
move.l #MEMF_CLEAR,d1
CALL AllocMem
move.l d0,fw_FastMemStack(a4)
@ -143,7 +138,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

@ -2,9 +2,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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:
@ -908,10 +908,6 @@ gth_ham_line_m:
TDPOINT 194,74
dc.w 0
IFND FW_DEMO_PART
dc.w 1 ; avoid hunk shortening that leaves dirty memory on kick 1.3
ENDC
;********************************************************************
;--------------------------------------------------------------------
@ -945,22 +941,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 +964,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

@ -5,9 +5,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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

@ -2,9 +2,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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

@ -7,9 +7,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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

@ -5,9 +5,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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 -Fhunk -align -phxass %s -DFW_DEMO_PART=1 -DFW_HD_DEMO_PART=1 -o %s -I"%%VBCC%%/../includes" -quiet
-asv=vasmm68k_mot -x -maxerrors=50 -m68000 -Fhunk -align -phxass %s -DFW_DEMO_PART=1 -DFW_HD_DEMO_PART=1 -o %s -I"%%VBCC%%/../includes"
-as=vasmm68k_mot -x -maxerrors=50 -m68000 -showopt -Fhunk -kick1hunks -align -phxass %s -DFW_DEMO_PART=1 -DFW_HD_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 -showopt -Fhunk -kick1hunks -align -phxass %s -DFW_DEMO_PART=1 -DFW_HD_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
-l2v=vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -L"%%VBCC%%/targets/m68k-amigaos/lib" %s %s -o %s -t
-ld=vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -L"%%VBCC%%/targets/m68k-amigaos/lib" "%%VBCC%%/targets/m68k-amigaos/lib/startup.o" %s %s -lvc -o %s
-ldv=vlink -bamigahunk -Bstatic -Cvbcc -nostdlib -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

@ -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

@ -5,9 +5,9 @@
IFD FW_DEMO_PART
IFD FW_HD_DEMO_PART
include "../hamazing/hdtrackmo_settings.i"
include "hdtrackmo_settings.i"
ELSE
include "../hamazing/trackmo_settings.i"
include "trackmo_settings.i"
ENDC
ELSE
FW_STANDALONE_FILE_MODE = 1 ; enable standalone (part testing)
@ -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