file_id.diz
.ooOOOOOOOoo.
oOOOo oOOo oo .ooOoo.
oOOo oo oOo o ooOOo
oOOo. oo .oo O oo oOo
oOo. oo .O oOo Oo .oOo
oOOOo. oo oo o o. ooo oo oOo
oOOo. oOo O oOo oo.
oOOo.o oo o. o oo.
o oOo o o. oo oOo
oOo. oOo o. oOo
oOOOo o
......................................................
: :
: smfxboot :
: :
: Released at Outline 2024, May 11 :
: :
:....................................................:
: :
: System: Atari ST(e), 1 MB RAM :
: :
:....................................................:
: :
: Credits: :
: :
: exocet :
: - palette :
: :
: tom :
: - Music (driver inspired by gwEm/PHF) :
: :
: spkr :
: - Code (inspired by superogue) :
: :
: Additional credits: :
: :
: Grazey/PHF :
: - makeboot code :
: :
:....................................................:
eof
; smfxboot.s - source
;
;.init
; moveq #32,d4
; move.w d4,-(sp)
; trap #1
;
;.setpalette
; lea $ffff8240,a0
; moveq #15-1,d6 ; one black for dezignkameel
; move.w #$8a,d5 ; index by exocet :)
;.setcol
; move.w d5,(a0)+
; add.w #$ff80,d5 ; index by exocet ;)
; dbra d6,.setcol
;
;.genc2ptab
; lea end+c2psource,a0
; move.l a0,a5
; move.w #$c0,d0
; moveq #0,d1
; moveq #2-1,d7
; move.l #%00001000010011000010101001101110,d2 ; this is bit encoded c2p tab
;.dopart
; moveq #32-1,d6
;.lx
; asl.l #1,d2
; bcc.s .fill
; move.b d0,(a0)+
; jmp .x
;.fill
; move.b d1,(a0)+
;.x
; dbra d6,.lx
; move.l #%00011001010111010011101101111111,d2 ;this is 2nd part of c2p encoded tab
; dbra d7,.dopart
;
;.gentexture_c2ptabs
; lea end+text1,a1
; move.l #128*256*4,a6
; lea (a1,a6.l),a2
; lea (a2,a6.l),a3
; lea (a3,a6.l),a4
; moveq #128-1,d7
; moveq #%1111,d0
;.lyy
; move.w #256-1,d6
;.lxx
; move.w d6,d5 ; use counter for texture generation
; or.w d7,d5 ; use counter for texture generation
; and.w d0,d5 ; normalize texture value
; asl.w #2,d5
; move.l (a5,d5.w),d1 ; c2p tab val
; move.l d1,(a1)+ ; tab1
; lsr.l #2,d1
; move.l d1,(a2)+ ; tab2
; lsr.l #2,d1
; move.l d1,(a3)+ ; tab3
; lsr.l #2,d1
; move.l d1,(a4)+ ; tab4
; dbra d6,.lxx
; dbra d7,.lyy
;
;.genOffsetmap
; lea end+offsmap,a4
; move.l a4,a5
; moveq #%1111111,d0
; moveq #100-1,d7 ; 100 height
;.ol
; move.l d7,d5
; sub.w #50,d5 ; dy
; move.l d5,a2 ; save for hole
; move.l d5,d2
; swap d2
; asr.l #5,d2
; muls d5,d5 ; dy^2
; move.w #160-1,d6 ; 160 width
;.il
; move.l d6,d4
; sub.w #80,d4 ; dx
;.d4pos
; move.l d4,d3
; muls d4,d4 ; dx^2
; add.l d5,d4 ; dx^2 + dy^2
; cmp.w #340,d4
; bge.s .nohole
;.hole
; move.l a2,d1 ;dy
; muls d4,d1 ;dy*r
; asr.l #8,d1
; muls d4,d3
; asr.l #8,d3
; and.w d0,d3
; bra.s .go
;.nohole
; swap d3
; asr.l #6,d3
; divs d4,d3 ;
; and.w d0,d3 ; % 128
; move.l d2,d1 ;
; divs d4,d1
;.go
; and.w d0,d1
; asl.w #7,d1
; add.w d1,d3
; lsl.w #2,d3
; move.w d3,(a4)+
; dbra d6,.il
; dbra d7,.ol
;
;.genc2pEffectCode
; movem.l code,d0-d4 ; code size: 5*4 = 20
; move.l d4,d5 ; 160 off
; move.w d4,a2 ; 160 plain
; sub.w d4,d4 ; d4 is off 0
; move.w d0,d7 ; d0 contains 100-1
;.yy
; moveq #20-1,d6
;.xx
; move.w (a5)+,d0
; move.w (a5)+,d1
; move.w (a5)+,d2
; move.w (a5)+,d3
; movem.l d0-d5,(a0)
; addq.w #1,d4
; addq.w #1,d5
; move.w (a5)+,d0
; move.w (a5)+,d1
; move.w (a5)+,d2
; move.w (a5)+,d3
; movem.l d0-d5,6*4(a0)
; addq.w #7,d4
; addq.w #7,d5
; lea 6*4*2(a0),a0
; dbra d6,.xx
; add.w a2,d4
; add.w a2,d5
; dbra d7,.yy
; move.w #$4EF9,(a0)+ ; jmp.l
; lea frame(pc),a5
; move.l a5,(a0)
; move.l $44e,a0 ; we do this to keep screen
; addq.w #2,a5
;
;.ymbits
; move.w #%0101000100010001,d1
;frame
; move.w #0,d0 ; for smc
;nx add.w #256*2+4,(a5)
; and.w #%11111111111100,d0
;.spacecheck
; cmp.b #57,$fffffc02.w ; break key to drop to desktop, required for bootsector rules
; bne .nospace
; rts
;.nospace
;
;.ymdriver
; lea msx(pc),a3 ; YM data structure
; lea $ffff8800.w,a1 ; YM base address
; moveq #3,d3 ;
; andi.w #15,d4
; bne.s .fiftyhz ; not time for new pattern position yet
; addq.w #1,d6
; move.w d6,d2
; lsr.w #2,d2
; andi.w #15,d2
; move.b 10(a3,d2.w),1(a3) ; grab from note table (.notes)
; move.w #%0000011111111111,d4 ; reset d4 mixer - so writes to YM #7. initially everything off
; ror.w d1
; bcc.s .nokick
; eor.w d3,d4 ; enable all squarewaves
;.nokick:
;.fiftyhz:
; addq.b #1,d4 ; increment speed counter
; move.b d4,3(a3) ; set kick drum frequency
;.setuploop:
; move.w (a3)+,d3 ; get new YM register value
; movep.w d3,(a1) ; put new register onto YM
; bne.s .setuploop
; movep.w d4,(a1)
;
;.runEffect
; lea end+text1+256*128,a1 ;6
; add.w d0,a1
; lea (a1,a6.l),a2
; lea (a2,a6.l),a3
; lea (a3,a6.l),a4
; jmp end+theEffect
;msx
;.commands
; dc.w $0400 ; channel C freq
; dc.w $0300 ; channel B freq
; dc.w $0201 ; channel B freq
; dc.w $0A0F ; channel C volume
; dc.w $090E ; channel B volume
; dc.w $0000 ; gross null terminate
;.notes
; dc.b 253
; dc.b 159
; dc.b 80
; dc.b 169
; dc.b 134
; dc.b 142
; dc.b 190
; dc.b 213
;ymdataend:
;code
; dc.l $20290000+100-1 ;move.l 1234(a1),d0 ;d0 ;4
; dc.l $80AA0000 ;move.l 1234(a2),d0 ;d1 ;4
; dc.l $80AB0000 ;move.l 1234(a3),d0 ;d1 ;4
; dc.l $80AC0000 ;move.l 1234(a4),d0 ;d1 ;4
; dc.l $01C80000+160 ;movep.l d0,1234(a0) ;d4 ;4
;end
; rsreset
; rs.b $10000
;c2psource rs.b 64
;theEffect rs.b 100*20*48+10 ;96010
;offsmap rs.b 100*160*2
;text1 rs.b 128*256*4
;text2 rs.b 128*256*4
;text3 rs.b 128*256*4
;text4 rs.b 128*256*4