diff --git a/com.wudsn.ide.asm.compilers.test/META-INF/MANIFEST.MF b/com.wudsn.ide.asm.compilers.test/META-INF/MANIFEST.MF index 680be15e..170d6222 100644 --- a/com.wudsn.ide.asm.compilers.test/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.asm.compilers.test/META-INF/MANIFEST.MF @@ -8,3 +8,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-Localization: plugin Require-Bundle: com.wudsn.ide.asm Bundle-ActivationPolicy: lazy +Automatic-Module-Name: com.wudsn.ide.asm.compilers.test diff --git a/com.wudsn.ide.asm.compilers/META-INF/MANIFEST.MF b/com.wudsn.ide.asm.compilers/META-INF/MANIFEST.MF index 696a81fa..4e4bc081 100644 --- a/com.wudsn.ide.asm.compilers/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.asm.compilers/META-INF/MANIFEST.MF @@ -10,3 +10,4 @@ Require-Bundle: com.wudsn.ide.asm, org.eclipse.ui.ide Bundle-ActivationPolicy: lazy Bundle-ClassPath: . +Automatic-Module-Name: com.wudsn.ide.asm.compilers diff --git a/com.wudsn.ide.asm/META-INF/MANIFEST.MF b/com.wudsn.ide.asm/META-INF/MANIFEST.MF index 0eb89d2f..16dc1cdb 100644 --- a/com.wudsn.ide.asm/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.asm/META-INF/MANIFEST.MF @@ -82,3 +82,4 @@ Export-Package: com.wudsn.ide.asm; org.eclipse.core.runtime.preferences, org.eclipse.swt.widgets", com.wudsn.ide.asm.runner;uses:="com.wudsn.ide.asm" +Automatic-Module-Name: com.wudsn.ide.asm diff --git a/com.wudsn.ide.base/META-INF/MANIFEST.MF b/com.wudsn.ide.base/META-INF/MANIFEST.MF index 2419ae4b..12bea7a9 100644 --- a/com.wudsn.ide.base/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.base/META-INF/MANIFEST.MF @@ -24,3 +24,4 @@ Export-Package: com.wudsn.ide.base, com.wudsn.ide.base.editor.hex, com.wudsn.ide.base.gui Import-Package: org.eclipse.ui.internal.editors.text +Automatic-Module-Name: com.wudsn.ide.base diff --git a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditor.java b/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditor.java index 986c4d23..76cb083d 100644 --- a/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditor.java +++ b/com.wudsn.ide.base/src/com/wudsn/ide/base/editor/hex/HexEditor.java @@ -276,16 +276,17 @@ public final class HexEditor extends EditorPart implements ISelectionProvider, A dataToUi(); } + @SuppressWarnings("unchecked") @Override - public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) { + public T getAdapter(Class adapter) { if (adapter != null && IContentOutlinePage.class.equals(adapter)) { if (contentOutlinePage == null) { + contentOutlinePage = new HexEditorContentOutlinePage(this); - contentOutlinePage.setInput(parserComponent.getOutlineBlocks()); } - return contentOutlinePage; + return (T)contentOutlinePage; } return super.getAdapter(adapter); } diff --git a/com.wudsn.ide.dsk/META-INF/MANIFEST.MF b/com.wudsn.ide.dsk/META-INF/MANIFEST.MF index 3aaac19a..5af66282 100644 --- a/com.wudsn.ide.dsk/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.dsk/META-INF/MANIFEST.MF @@ -15,3 +15,4 @@ Bundle-ActivationPolicy: lazy Export-Package: com.webcodepro.applecommander.storage Bundle-ClassPath: lib/AppleCommander-1.3.5.14.jar, . +Automatic-Module-Name: com.wudsn.ide.dsk diff --git a/com.wudsn.ide.gfx/META-INF/MANIFEST.MF b/com.wudsn.ide.gfx/META-INF/MANIFEST.MF index 558516dd..1f5daec5 100644 --- a/com.wudsn.ide.gfx/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.gfx/META-INF/MANIFEST.MF @@ -19,3 +19,4 @@ Export-Package: com.wudsn.ide.gfx.editor Bundle-ClassPath: lib/js.jar, lib/recoil.jar, . +Automatic-Module-Name: com.wudsn.ide.gfx diff --git a/com.wudsn.ide.gfx/lib/recoil.jar b/com.wudsn.ide.gfx/lib/recoil.jar new file mode 100644 index 00000000..a5abb52c Binary files /dev/null and b/com.wudsn.ide.gfx/lib/recoil.jar differ diff --git a/com.wudsn.ide.gfx/src/com/wudsn/ide/gfx/converter/generic/RecoilConverter.java b/com.wudsn.ide.gfx/src/com/wudsn/ide/gfx/converter/generic/RecoilConverter.java new file mode 100644 index 00000000..b9f26248 --- /dev/null +++ b/com.wudsn.ide.gfx/src/com/wudsn/ide/gfx/converter/generic/RecoilConverter.java @@ -0,0 +1,58 @@ +/** + * Copyright (C) 2009 - 2019 Peter Dell + * + * This file is part of WUDSN IDE. + * + * WUDSN IDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * WUDSN IDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with WUDSN IDE. If not, see . + */ + +package com.wudsn.ide.gfx.converter.generic; + +import com.wudsn.ide.gfx.converter.Converter; +import com.wudsn.ide.gfx.converter.FilesConverterData; +import net.sf.recoil.RECOIL; + +/** + * Generic converter based on RECOIL + * by Piotr Fusik, Adrian Matoga et. al. + * + * @author Peter Dell + */ +public class RecoilConverter extends Converter { + + public static final int SOURCE_FILE = 1; + + @Override + public void convertToImageDataSize(FilesConverterData data) { + RECOIL recoil = new RECOIL(); + byte[] content = data.getSourceFileBytes(SOURCE_FILE); + boolean valid = recoil.decode(data.getParameters().getSourceFile(SOURCE_FILE).getPath(), content, + content.length); + if (valid) { + data.setImageDataHeight(recoil.getHeight()); + data.setImageDataWidth(recoil.getWidth()); + + } + } + + @Override + public boolean convertToImageData(FilesConverterData data) { + RECOIL recoil = new RECOIL(); + byte[] content = data.getSourceFileBytes(SOURCE_FILE); + boolean valid = recoil.decode(data.getParameters().getSourceFile(SOURCE_FILE).getPath(), content, + content.length); + return valid; + } + +} diff --git a/com.wudsn.ide.hex/META-INF/MANIFEST.MF b/com.wudsn.ide.hex/META-INF/MANIFEST.MF index 6954c1a6..365f60c8 100644 --- a/com.wudsn.ide.hex/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.hex/META-INF/MANIFEST.MF @@ -9,3 +9,4 @@ Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy +Automatic-Module-Name: com.wudsn.ide.hex diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/Fuji.asm b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/Fuji.asm new file mode 100644 index 00000000..186e29b4 --- /dev/null +++ b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/Fuji.asm @@ -0,0 +1,65 @@ + + org $2000 + + buffer_mode=0 + icl "snd/Sound.asm" + + org $4000 + + .proc main + mwa #dl 560 + mva #>charset 756 + +; jsr sound.stop + ldx #sound.module + lda #0 + jsr sound.init + +loop lda #15 + +@ cmp $d40b + bne @- + + jsr sound.play + +@ lda $d40b + sta $d01a + cmp #112 + bne @- + lda #0 + sta $d01a + jmp loop + + jsr sound.stop + jmp $e474 + .endp + + org $5000 + + .local charset + ins 'gfx/Charset.chr' + .endl + + .local dl +:3 .byte $70 + .byte $42, a(text) + + .byte $4f, a(picture) +:95 .byte $0f + .byte $4f, a(picture+96*40) +:95 .byte $0f + .byte $41, a(dl) + .endl + + .local text + .byte "Hello Fuji!" + .endl + + org $6100 + .local picture + ins 'gfx/Image.pic' + .endl + + run main + diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/Fuji.xex b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/Fuji.xex new file mode 100644 index 00000000..bba7e933 Binary files /dev/null and b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/Fuji.xex differ diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.chr b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.chr new file mode 100644 index 00000000..a3311e9a Binary files /dev/null and b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.chr differ diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.png b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.png new file mode 100644 index 00000000..58fc355d Binary files /dev/null and b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.png differ diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.png.cnv b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.png.cnv new file mode 100644 index 00000000..71f6c2c7 --- /dev/null +++ b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Charset.png.cnv @@ -0,0 +1,42 @@ +#WUDSN IDE Converter Parameters +#Fri Aug 30 12:11:55 CEST 2019 +converterDirection=IMAGE_TO_FILES +filesConverterParameters.converterId= +filesConverterParameters.imageAspect.factorX=1 +filesConverterParameters.imageAspect.factorY=1 +filesConverterParameters.displayAspect.factorX=1 +filesConverterParameters.displayAspect.factorY=1 +filesConverterParameters.displayShrinkToFit=false +filesConverterParameters.displayZoomToFit=true +filesConverterParameters.sourceFiles=0 +filesConverterParameters.imageFilePath= +filesConverterParameters.columns=40 +filesConverterParameters.rows=24 +filesConverterParameters.spacingColor.red=0 +filesConverterParameters.spacingColor.green=0 +filesConverterParameters.spacingColor.blue=128 +filesConverterParameters.spacingWidth=0 +filesConverterParameters.palette=HIRES_1 +filesConverterParameters.paletteType=ATARI_DEFAULT +filesConverterParameters.paletteRGBs=0 +imageConverterParameters.converterId=com.wudsn.ide.gfx.converter.generic.CharSet1x1HiresConverter +imageConverterParameters.imageAspect.factorX=1 +imageConverterParameters.imageAspect.factorY=1 +imageConverterParameters.displayAspect.factorX=1 +imageConverterParameters.displayAspect.factorY=1 +imageConverterParameters.displayShrinkToFit=false +imageConverterParameters.displayZoomToFit=true +imageConverterParameters.imageFilePath=Charset.png +imageConverterParameters.targetFiles=10 +imageConverterParameters.targetFiles.0.path=Charset.chr +imageConverterParameters.targetFiles.1.path= +imageConverterParameters.targetFiles.2.path= +imageConverterParameters.targetFiles.3.path= +imageConverterParameters.targetFiles.4.path= +imageConverterParameters.targetFiles.5.path= +imageConverterParameters.targetFiles.6.path= +imageConverterParameters.targetFiles.7.path= +imageConverterParameters.targetFiles.8.path= +imageConverterParameters.targetFiles.9.path= +imageConverterParameters.useDefaultScript=true +imageConverterParameters.script=function convertToFileData(data) {\r\n\tvar columns \= data.getImageDataWidth() / 8;\r\n\tvar rows \= data.getImageDataHeight() / 8;\r\n\tvar chars \= 256;\r\n\r\n\tvar char \= 0;\r\n\tvar bytes \= [];\r\n\tvar offset \= 0;\r\n\tfor (var r \= 0; r < rows; r++) {\r\n\t\tfor (var c \= 0; c < columns; c++) {\r\n\t\t\tif (char < chars) {\r\n\t\t\t\tfor (var l\=0;l<8;l++) {\r\n\t\t\t\t\tvar b \= 0;\r\n\t\t\t\t\tfor (var p \= 0; p < 8; p++) {\r\n\t\t \t\t\tvar color;\r\n\t\t \t\t\tcolor \= data.getPixel(c*8+p, r*8+l);\r\n\t\t \t\t\tif (color \!\= 0) {\r\n\t\t\t\t\t\t\tb \= b | 1 << 7 - p;\r\n\t\t \t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbytes[offset++] \= b;\r\n \t\t\t}\r\n\t\t\tchar++;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tdata.setTargetFileObject(0, bytes);\r\n} diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.pic b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.pic new file mode 100644 index 00000000..04c82175 Binary files /dev/null and b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.pic differ diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.png b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.png new file mode 100644 index 00000000..ab621ce3 Binary files /dev/null and b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.png differ diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.png.cnv b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.png.cnv new file mode 100644 index 00000000..5575f898 --- /dev/null +++ b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/gfx/Image.png.cnv @@ -0,0 +1,42 @@ +#WUDSN IDE Converter Parameters +#Fri Aug 30 12:27:38 CEST 2019 +converterDirection=IMAGE_TO_FILES +filesConverterParameters.converterId= +filesConverterParameters.imageAspect.factorX=1 +filesConverterParameters.imageAspect.factorY=1 +filesConverterParameters.displayAspect.factorX=1 +filesConverterParameters.displayAspect.factorY=1 +filesConverterParameters.displayShrinkToFit=false +filesConverterParameters.displayZoomToFit=true +filesConverterParameters.sourceFiles=0 +filesConverterParameters.imageFilePath= +filesConverterParameters.columns=40 +filesConverterParameters.rows=24 +filesConverterParameters.spacingColor.red=0 +filesConverterParameters.spacingColor.green=0 +filesConverterParameters.spacingColor.blue=128 +filesConverterParameters.spacingWidth=0 +filesConverterParameters.palette=HIRES_1 +filesConverterParameters.paletteType=ATARI_DEFAULT +filesConverterParameters.paletteRGBs=0 +imageConverterParameters.converterId=com.wudsn.ide.gfx.converter.atari8bit.LinearBitMapGraphics8Converter +imageConverterParameters.imageAspect.factorX=1 +imageConverterParameters.imageAspect.factorY=1 +imageConverterParameters.displayAspect.factorX=1 +imageConverterParameters.displayAspect.factorY=1 +imageConverterParameters.displayShrinkToFit=false +imageConverterParameters.displayZoomToFit=true +imageConverterParameters.imageFilePath=Image.png +imageConverterParameters.targetFiles=10 +imageConverterParameters.targetFiles.0.path=Image.pic +imageConverterParameters.targetFiles.1.path= +imageConverterParameters.targetFiles.2.path= +imageConverterParameters.targetFiles.3.path= +imageConverterParameters.targetFiles.4.path= +imageConverterParameters.targetFiles.5.path= +imageConverterParameters.targetFiles.6.path= +imageConverterParameters.targetFiles.7.path= +imageConverterParameters.targetFiles.8.path= +imageConverterParameters.targetFiles.9.path= +imageConverterParameters.useDefaultScript=true +imageConverterParameters.script=function convertToFileData(data) {\r\n\tvar bpsl \= (data.getImageDataWidth() + 7) / 8;\r\n\tvar bytes \= [];\r\n\tvar offset \= 0;\r\n\tfor (var y \= 0; y < data.getImageDataHeight(); y++) {\r\n\t for (var x \= 0; x < data.getImageDataWidth(); x \= x + 8) {\r\n\t\t\tvar b \= 0;\r\n\t\t\tfor (var p \= 0; p < 8; p++) {\r\n\t\t\t var color;\r\n\t\t\t color \= data.getPixel(x + p, y);\r\n\t\t\t if (color \!\= 0) {\r\n\t\t\t\t\tb \= b | 1 << 7 - p;\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t\tbytes[offset++] \= b;\r\n\t }\r\n\t}\r\n\tdata.setTargetFileObject(0, bytes);\r\n} diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/RMT-Player.asm b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/RMT-Player.asm new file mode 100644 index 00000000..628d2c0d --- /dev/null +++ b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/RMT-Player.asm @@ -0,0 +1,1252 @@ +;* +;* Raster Music Tracker, RMT Atari routine version 1.20040221 +;* (c) Radek Sterba, Raster/C.P.U., 2002 - 2004 +;* http://raster.atari.org +;* +;* Warnings: +;* +;* 1. RMT player routine needs 19 itself reserved bytes in zero page (no accessed +;* from any other routines) as well as circa 1KB of memory before the "PLAYER" +;* address for frequency tables and functionary variables. It's: +;* a) from PLAYER-$400 to PLAYER for stereo RMTplayer +;* b) from PLAYER-$380 to PLAYER for mono RMTplayer +;* +;* 2. RMT player routine MUST (!!!) be compiled from the begin of the memory page. +;* i.e. "PLAYER" address can be $..00 only! +;* +;* 3. Because of RMTplayer provides a lot of effects, it spent a lot of CPU time. +;* +;* STEREOMODE equ 0 ;0 => compile RMTplayer for 4 tracks mono +;* ;1 => compile RMTplayer for 8 tracks stereo +;* ;2 => compile RMTplayer for 4 tracks stereo L1 R2 R3 L4 +;* ;3 => compile RMTplayer for 4 tracks stereo L1 L2 R3 R4 +;* +;PLAYER equ $3400 +;* + IFT STEREOMODE==1 +TRACKS equ 8 + ELS +TRACKS equ 4 + EIF + +;* +;* RMT ZeroPage addresses +; opt f- + org sound.zp +p_tis +p_instrstable org *+2 +p_trackslbstable org *+2 +p_trackshbstable org *+2 +p_song org *+2 +ns org *+2 +nr org *+2 +nt org *+2 +reg1 org *+1 +reg2 org *+1 +reg3 org *+1 +tmp org *+1 + IFT FEAT_COMMAND2 +frqaddcmd2 org *+1 + EIF + IFT TRACKS>4 + org PLAYER-$400 + ELS + org PLAYER-$380 + EIF +track_variables +trackn_db org *+TRACKS +trackn_hb org *+TRACKS +trackn_idx org *+TRACKS +trackn_pause org *+TRACKS +trackn_note org *+TRACKS +trackn_volume org *+TRACKS +trackn_distor org *+TRACKS +trackn_shiftfrq org *+TRACKS + IFT FEAT_PORTAMENTO +trackn_portafrqc org *+TRACKS +trackn_portafrqa org *+TRACKS +trackn_portaspeed org *+TRACKS +trackn_portaspeeda org *+TRACKS +trackn_portadepth org *+TRACKS + EIF +trackn_instrx2 org *+TRACKS +trackn_instrdb org *+TRACKS +trackn_instrhb org *+TRACKS +trackn_instridx org *+TRACKS +trackn_instrlen org *+TRACKS +trackn_instrlop org *+TRACKS +trackn_instrreachend org *+TRACKS +trackn_volumeslidedepth org *+TRACKS +trackn_volumeslidevalue org *+TRACKS + IFT FEAT_VOLUMEMIN +trackn_volumemin org *+TRACKS + EIF +trackn_effdelay org *+TRACKS +trackn_effvibratoa org *+TRACKS +trackn_effvibratobeg org *+TRACKS +trackn_effvibratoend org *+TRACKS +trackn_effshift org *+TRACKS +trackn_tabletypespeed org *+TRACKS + IFT FEAT_TABLEMODE +trackn_tablemode org *+TRACKS + EIF +trackn_tablenote org *+TRACKS +trackn_tablea org *+TRACKS +trackn_tableend org *+TRACKS + IFT FEAT_TABLEGO +trackn_tablelop org *+TRACKS + EIF +trackn_tablespeeda org *+TRACKS +trackn_command org *+TRACKS + IFT FEAT_BASS16 +trackn_outnote org *+TRACKS + EIF + IFT FEAT_FILTER +trackn_filter org *+TRACKS + EIF +trackn_audf org *+TRACKS +trackn_audc org *+TRACKS + IFT FEAT_AUDCTLMANUALSET +trackn_audctl org *+TRACKS + EIF +v_audctl org *+1 +v_audctl2 org *+1 +v_speed org *+1 +v_aspeed org *+1 +v_bspeed org *+1 +v_instrspeed org *+1 +v_ainstrspeed org *+1 +v_maxtracklen org *+1 +v_abeat org *+1 +track_endvariables + org PLAYER-$100-$140-$30 +INSTRPAR equ 12 +tabbeganddistor + dta frqtabpure-frqtab,$00 + dta frqtabpure-frqtab,$20 + dta frqtabpure-frqtab,$40 + dta frqtabbass1-frqtab,$c0 + dta frqtabpure-frqtab,$80 + dta frqtabpure-frqtab,$a0 + dta frqtabbass1-frqtab,$c0 + dta frqtabbass2-frqtab,$c0 +vibtabbeg dta 0,vib1-vib0,vib2-vib0,vib3-vib0,vibx-vib0 +vib0 dta 0 +vib1 dta 1,-1,-1,1 +vib2 dta 1,0,-1,-1,0,1 +vib3 dta 1,1,0,-1,-1,-1,-1,0,1,1 +vibx +; opt f+ + + org PLAYER-$100-$140 + IFT FEAT_BASS16 +frqtabbasslo + dta $F2,$33,$96,$E2,$38,$8C,$00,$6A,$E8,$6A,$EF,$80,$08,$AE,$46,$E6 + dta $95,$41,$F6,$B0,$6E,$30,$F6,$BB,$84,$52,$22,$F4,$C8,$A0,$7A,$55 + dta $34,$14,$F5,$D8,$BD,$A4,$8D,$77,$60,$4E,$38,$27,$15,$06,$F7,$E8 + dta $DB,$CF,$C3,$B8,$AC,$A2,$9A,$90,$88,$7F,$78,$70,$6A,$64,$5E,$00 + EIF + org PLAYER-$100-$100 +frqtab + ERT [255 + ldy #0 + tya +ri0 sta track_variables,y + sta track_endvariables-$100,y + iny + bne ri0 + ELS + ldy #track_endvariables-track_variables + lda #0 +ri0 sta track_variables-1,y + dey + bne ri0 + EIF + ldy #4 + lda (ns),y + sta v_maxtracklen + iny + lda (ns),y + sta v_speed + iny + lda (ns),y + sta v_instrspeed + sta v_ainstrspeed + ldy #8 +ri1 lda (ns),y + sta p_tis-8,y + iny + cpy #8+8 + bne ri1 + pla + pha + IFT TRACKS>4 + asl @ + asl @ + asl @ + clc + adc p_song + sta p_song + pla + php + and #$e0 + asl @ + rol @ + rol @ + rol @ + ELS + asl @ + asl @ + clc + adc p_song + sta p_song + pla + php + and #$c0 + asl @ + rol @ + rol @ + EIF + plp + adc p_song+1 + sta p_song+1 + jsr GetSongLineTrackLineInitOfNewSetInstrumentsOnlyRmtp3 +rmt_silence + IFT STEREOMODE>0 + lda #0 + sta $d208 + sta $d218 + ldy #3 + sty $d20f + sty $d21f + ldy #8 +si1 sta $d200,y + sta $d210,y + dey + bpl si1 + ELS + lda #0 + sta $d208 + ldy #3 + sty $d20f + ldy #8 +si1 sta $d200,y + dey + bpl si1 + EIF + lda v_instrspeed + rts +GetSongLineTrackLineInitOfNewSetInstrumentsOnlyRmtp3 +GetSongLine + ldx #0 + stx v_abeat +nn0 +nn1 txa + tay + lda (p_song),y + cmp #$fe + bcs nn2 + tay + lda (p_trackslbstable),y + sta trackn_db,x + lda (p_trackshbstable),y +nn1a sta trackn_hb,x + lda #0 + sta trackn_idx,x + lda #1 +nn1a2 sta trackn_pause,x + lda #$80 + sta trackn_instrx2,x + inx +xtracks01 cpx #TRACKS + bne nn1 + lda p_song + clc +xtracks02 adc #TRACKS + sta p_song + bcc GetTrackLine + inc p_song+1 +nn1b + jmp GetTrackLine +nn2 + beq nn3 +nn2a + lda #0 + beq nn1a2 +nn3 + ldy #2 + lda (p_song),y + tax + iny + lda (p_song),y + sta p_song+1 + stx p_song + ldx #0 + beq nn0 +GetTrackLine +oo0 +oo0a + lda v_speed + sta v_bspeed + ldx #-1 +oo1 + inx + dec trackn_pause,x + bne oo1x + inc trackn_pause,x +oo1b + lda trackn_db,x + sta ns + lda trackn_hb,x + sta ns+1 +oo1i + ldy trackn_idx,x + lda (ns),y + sta reg1 + iny + lda (ns),y + sta reg2 + iny + tya + sta trackn_idx,x + lda reg1 + and #$3f + cmp #61 + beq oo1a + bcs oo2 + sta trackn_note,x + IFT FEAT_BASS16 + sta trackn_outnote,x + EIF + lda reg2 + lsr @ + and #$3f*2 + sta trackn_instrx2,x +oo1a lda reg2 + lsr @ + ror reg1 + lsr @ + ror reg1 + lda reg1 + and #$f0 + sta trackn_volume,x +oo1x +xtracks03sub1 cpx #TRACKS-1 + bne oo1 + lda v_bspeed + sta v_speed + sta v_aspeed + jmp InitOfNewSetInstrumentsOnly +oo2 + cmp #63 + beq oo63 + lda reg1 + and #$c0 + beq oo62_b + asl @ + rol @ + rol @ + sta trackn_pause,x + dec trackn_idx,x + jmp oo1x +oo62_b + lda reg2 + sta trackn_pause,x + jmp oo1x +oo63 + lda reg1 + bmi oo63_1X + lda reg2 + sta v_bspeed + jmp oo1i +oo63_1X + cmp #255 + beq oo63_11 + lda reg2 + sta trackn_idx,x + jmp oo1i +oo63_11 + jmp GetSongLine +p2xrmtp3 jmp rmt_p3 +p2x0 dex + bmi p2xrmtp3 +InitOfNewSetInstrumentsOnly +p2x1 ldy trackn_instrx2,x + bmi p2x0 +SetUpInstrumentY2 + lda (p_instrstable),y + sta trackn_instrdb,x + sta nt + iny + lda (p_instrstable),y + sta trackn_instrhb,x + sta nt+1 + IFT FEAT_FILTER + lda #1 + sta trackn_filter,x + EIF + IFT FEAT_TABLEGO + IFT FEAT_FILTER + tay + ELS + ldy #1 + EIF + lda (nt),y + sta trackn_tablelop,x + iny + ELS + ldy #2 + EIF + lda (nt),y + sta trackn_instrlen,x + iny + lda (nt),y + sta trackn_instrlop,x + iny + lda (nt),y + sta trackn_tabletypespeed,x + IFT FEAT_TABLETYPE||FEAT_TABLEMODE + and #$3f + EIF + sta trackn_tablespeeda,x + IFT FEAT_TABLEMODE + lda (nt),y + and #$40 + sta trackn_tablemode,x + EIF + IFT FEAT_AUDCTLMANUALSET + iny + lda (nt),y + sta trackn_audctl,x + iny + ELS + ldy #6 + EIF + lda (nt),y + sta trackn_volumeslidedepth,x + IFT FEAT_VOLUMEMIN + iny + lda (nt),y + sta trackn_volumemin,x + iny + ELS + ldy #8 + EIF + lda (nt),y + sta trackn_effdelay,x + iny + lda (nt),y + tay + lda vibtabbeg,y + sta trackn_effvibratoa,x + sta trackn_effvibratobeg,x + lda vibtabbeg+1,y + sta trackn_effvibratoend,x + ldy #10 + lda (nt),y + sta trackn_effshift,x + lda #128 + sta trackn_volumeslidevalue,x + sta trackn_instrx2,x + asl @ + sta trackn_instrreachend,x + sta trackn_shiftfrq,x + tay + lda (nt),y + sta trackn_tableend,x + adc #0 + sta trackn_instridx,x + lda #INSTRPAR + sta trackn_tablea,x + tay + lda (nt),y + sta trackn_tablenote,x +xata_rtshere + jmp p2x0 + +rmt_play +;rmt_p0 + .if buffer_mode = 0 + jsr SetPokey ;Commented out by JAC! + .endif +;rmt_p1 + dec v_ainstrspeed + bne rmt_p3 +p1a + lda v_instrspeed + sta v_ainstrspeed +rmt_p2 + dec v_aspeed + bne rmt_p3 + inc v_abeat + lda v_abeat + cmp v_maxtracklen + beq p2o3 + jmp GetTrackLine +p2o3 + jmp GetSongLineTrackLineInitOfNewSetInstrumentsOnlyRmtp3 +go_ppnext jmp ppnext +rmt_p3 + lda #>frqtab + sta nr+1 +xtracks05sub1 ldx #TRACKS-1 +pp1 + lda trackn_instrhb,x + beq go_ppnext + sta ns+1 + lda trackn_instrdb,x + sta ns + ldy trackn_instridx,x + lda (ns),y + sta reg1 + iny + lda (ns),y + sta reg2 + iny + lda (ns),y + sta reg3 + iny + tya + cmp trackn_instrlen,x + bcc pp2 + beq pp2 + lda #$80 + sta trackn_instrreachend,x +pp1b + lda trackn_instrlop,x +pp2 sta trackn_instridx,x + lda reg1 + IFT TRACKS>4 + cpx #4 + bcc pp2s + lsr @ + lsr @ + lsr @ + lsr @ +pp2s + EIF + and #$0f + ora trackn_volume,x + tay + lda volumetab,y + sta tmp + lda reg2 + and #$0e + tay + lda tabbeganddistor,y + sta nr + lda tmp + ora tabbeganddistor+1,y + sta trackn_audc,x +InstrumentsEffects + lda trackn_effdelay,x + beq ei2 + cmp #1 + bne ei1 + lda trackn_shiftfrq,x + clc + adc trackn_effshift,x + clc + ldy trackn_effvibratoa,x + adc vib0,y + sta trackn_shiftfrq,x + iny + tya + cmp trackn_effvibratoend,x + bne ei1a + lda trackn_effvibratobeg,x +ei1a + sta trackn_effvibratoa,x + jmp ei2 +ei1 + dec trackn_effdelay,x +ei2 + ldy trackn_tableend,x + cpy #INSTRPAR + beq ei3 + lda trackn_tablespeeda,x + bpl ei2f +ei2c + tya + cmp trackn_tablea,x + bne ei2c2 + IFT FEAT_TABLEGO + lda trackn_tablelop,x + ELS + lda #INSTRPAR + EIF + sta trackn_tablea,x + bne ei2a +ei2c2 + inc trackn_tablea,x +ei2a + lda trackn_instrdb,x + sta nt + lda trackn_instrhb,x + sta nt+1 + ldy trackn_tablea,x + lda (nt),y + IFT FEAT_TABLEMODE + ldy trackn_tablemode,x + beq ei2e + clc + adc trackn_tablenote,x +ei2e + EIF + sta trackn_tablenote,x + lda trackn_tabletypespeed,x + IFT FEAT_TABLETYPE||FEAT_TABLEMODE + and #$3f + EIF +ei2f + sec + sbc #1 + sta trackn_tablespeeda,x +ei3 + lda trackn_instrreachend,x + bpl ei4 + lda trackn_volume,x + beq ei4 + IFT FEAT_VOLUMEMIN + cmp trackn_volumemin,x + beq ei4 + bcc ei4 + EIF + tay + lda trackn_volumeslidevalue,x + clc + adc trackn_volumeslidedepth,x + sta trackn_volumeslidevalue,x + bcc ei4 + tya + sbc #16 + sta trackn_volume,x +ei4 + IFT FEAT_COMMAND2 + lda #0 + sta frqaddcmd2 + EIF + lda reg2 + sta trackn_command,x + and #$70 + lsr @ + lsr @ + sta jmx+1 +jmx bcc * + jmp cmd0 + nop + jmp cmd1 + nop + jmp cmd2 + nop + jmp cmd3 + nop + jmp cmd4 + nop + jmp cmd5 + nop + jmp cmd6 + nop + jmp cmd7 +cmd1 + IFT FEAT_COMMAND1 + lda reg3 + jmp cmd0c + EIF +cmd2 + IFT FEAT_COMMAND2 + lda reg3 + sta frqaddcmd2 + lda trackn_note,x + jmp cmd0a + EIF +cmd3 + IFT FEAT_COMMAND3 + lda trackn_note,x + clc + adc reg3 + sta trackn_note,x + jmp cmd0a + EIF +cmd4 + IFT FEAT_COMMAND4 + lda trackn_shiftfrq,x + clc + adc reg3 + sta trackn_shiftfrq,x + lda trackn_note,x + jmp cmd0a + EIF +cmd5 + IFT FEAT_COMMAND5&&FEAT_PORTAMENTO + IFT FEAT_TABLETYPE + lda trackn_tabletypespeed,x + bpl cmd5a1 + ldy trackn_note,x + lda (nr),y + clc + adc trackn_tablenote,x + jmp cmd5ax + EIF +cmd5a1 + lda trackn_note,x + clc + adc trackn_tablenote,x + cmp #61 + bcc cmd5a2 + lda #63 +cmd5a2 + tay + lda (nr),y +cmd5ax + sta trackn_portafrqc,x + ldy reg3 + bne cmd5a + sta trackn_portafrqa,x +cmd5a + tya + lsr @ + lsr @ + lsr @ + lsr @ + sta trackn_portaspeed,x + sta trackn_portaspeeda,x + lda reg3 + and #$0f + sta trackn_portadepth,x + lda trackn_note,x + jmp cmd0a + ELI FEAT_COMMAND5 + jmp pp9 + EIF +cmd6 + IFT FEAT_COMMAND6&&FEAT_FILTER + lda reg3 + clc + adc trackn_filter,x + sta trackn_filter,x + lda trackn_note,x + jmp cmd0a + ELI FEAT_COMMAND6 + jmp pp9 + EIF +cmd7 + IFT FEAT_COMMAND7SETNOTE||FEAT_COMMAND7VOLUMEONLY + IFT FEAT_COMMAND7SETNOTE + lda reg3 + IFT FEAT_COMMAND7VOLUMEONLY + cmp #$80 + beq cmd7a + EIF + sta trackn_note,x + jmp cmd0a + EIF + IFT FEAT_COMMAND7VOLUMEONLY +cmd7a + lda trackn_audc,x + ora #$f0 + sta trackn_audc,x + lda trackn_note,x + jmp cmd0a + EIF + EIF +cmd0 + lda trackn_note,x + clc + adc reg3 +cmd0a + IFT FEAT_TABLETYPE + ldy trackn_tabletypespeed,x + bmi cmd0b + EIF + clc + adc trackn_tablenote,x + cmp #61 + bcc cmd0a1 + lda #0 + sta trackn_audc,x + lda #63 +cmd0a1 + IFT FEAT_BASS16 + sta trackn_outnote,x + EIF + tay + lda (nr),y + clc + adc trackn_shiftfrq,x + IFT FEAT_COMMAND2 + clc + adc frqaddcmd2 + EIF + IFT FEAT_TABLETYPE + jmp cmd0c +cmd0b + cmp #61 + bcc cmd0b1 + lda #0 + sta trackn_audc,x + lda #63 +cmd0b1 + tay + lda trackn_shiftfrq,x + clc + adc trackn_tablenote,x + clc + adc (nr),y + IFT FEAT_COMMAND2 + clc + adc frqaddcmd2 + EIF + EIF +cmd0c + sta trackn_audf,x +pp9 + IFT FEAT_PORTAMENTO + lda trackn_portaspeeda,x + beq pp10 + dec trackn_portaspeeda,x + bne pp10 + lda trackn_portaspeed,x + sta trackn_portaspeeda,x + lda trackn_portafrqa,x + cmp trackn_portafrqc,x + beq pp10 + bcs pps1 + adc trackn_portadepth,x + bcs pps8 + cmp trackn_portafrqc,x + bcs pps8 + jmp pps9 +pps1 + sbc trackn_portadepth,x + bcc pps8 + cmp trackn_portafrqc,x + bcs pps9 +pps8 + lda trackn_portafrqc,x +pps9 + sta trackn_portafrqa,x +pp10 + lda reg2 + and #$01 + beq pp11 + lda trackn_portafrqa,x + clc + adc trackn_shiftfrq,x + sta trackn_audf,x +pp11 + EIF +ppnext + dex + bmi rmt_p4 + jmp pp1 +rmt_p4 + IFT FEAT_AUDCTLMANUALSET + lda trackn_audctl+0 + ora trackn_audctl+1 + ora trackn_audctl+2 + ora trackn_audctl+3 + tax + ELS + ldx #0 + EIF +qq1 + stx v_audctl + IFT FEAT_FILTER + IFT FEAT_FILTERG0L + lda trackn_command+0 + bpl qq2 + lda trackn_audc+0 + and #$0f + beq qq2 + lda trackn_audf+0 + clc + adc trackn_filter+0 + sta trackn_audf+2 + IFT FEAT_COMMAND7VOLUMEONLY&&FEAT_VOLUMEONLYG2L + lda trackn_audc+2 + and #$10 + bne qq1a + EIF + lda #0 + sta trackn_audc+2 +qq1a + txa + ora #4 + tax + EIF +qq2 + IFT FEAT_FILTERG1L + lda trackn_command+1 + bpl qq3 + lda trackn_audc+1 + and #$0f + beq qq3 + lda trackn_audf+1 + clc + adc trackn_filter+1 + sta trackn_audf+3 + IFT FEAT_COMMAND7VOLUMEONLY&&FEAT_VOLUMEONLYG3L + lda trackn_audc+3 + and #$10 + bne qq2a + EIF + lda #0 + sta trackn_audc+3 +qq2a + txa + ora #2 + tax + EIF +qq3 + IFT FEAT_FILTERG0L||FEAT_FILTERG1L + cpx v_audctl + bne qq5 + EIF + EIF + IFT FEAT_BASS16 + IFT FEAT_BASS16G1L + lda trackn_command+1 + and #$0e + cmp #6 + bne qq4 + lda trackn_audc+1 + and #$0f + beq qq4 + ldy trackn_outnote+1 + lda frqtabbasslo,y + sta trackn_audf+0 + lda frqtabbasshi,y + sta trackn_audf+1 + IFT FEAT_COMMAND7VOLUMEONLY&&FEAT_VOLUMEONLYG0L + lda trackn_audc+0 + and #$10 + bne qq3a + EIF + lda #0 + sta trackn_audc+0 +qq3a + txa + ora #$50 + tax + EIF +qq4 + IFT FEAT_BASS16G3L + lda trackn_command+3 + and #$0e + cmp #6 + bne qq5 + lda trackn_audc+3 + and #$0f + beq qq5 + ldy trackn_outnote+3 + lda frqtabbasslo,y + sta trackn_audf+2 + lda frqtabbasshi,y + sta trackn_audf+3 + IFT FEAT_COMMAND7VOLUMEONLY&&FEAT_VOLUMEONLYG2L + lda trackn_audc+2 + and #$10 + bne qq4a + EIF + lda #0 + sta trackn_audc+2 +qq4a + txa + ora #$28 + tax + EIF + EIF +qq5 + stx v_audctl + IFT TRACKS>4 + IFT FEAT_AUDCTLMANUALSET + lda trackn_audctl+4 + ora trackn_audctl+5 + ora trackn_audctl+6 + ora trackn_audctl+7 + tax + ELS + ldx #0 + EIF + stx v_audctl2 + IFT FEAT_FILTER + IFT FEAT_FILTERG0R + lda trackn_command+0+4 + bpl qs2 + lda trackn_audc+0+4 + and #$0f + beq qs2 + lda trackn_audf+0+4 + clc + adc trackn_filter+0+4 + sta trackn_audf+2+4 + IFT FEAT_COMMAND7VOLUMEONLY&&FEAT_VOLUMEONLYG2R + lda trackn_audc+2+4 + and #$10 + bne qs1a + EIF + lda #0 + sta trackn_audc+2+4 +qs1a + txa + ora #4 + tax + EIF +qs2 + IFT FEAT_FILTERG1R + lda trackn_command+1+4 + bpl qs3 + lda trackn_audc+1+4 + and #$0f + beq qs3 + lda trackn_audf+1+4 + clc + adc trackn_filter+1+4 + sta trackn_audf+3+4 + IFT FEAT_COMMAND7VOLUMEONLY&&FEAT_VOLUMEONLYG3R + lda trackn_audc+3+4 + and #$10 + bne qs2a + EIF + lda #0 + sta trackn_audc+3+4 +qs2a + txa + ora #2 + tax + EIF +qs3 + IFT FEAT_FILTERG0R||FEAT_FILTERG1R + cpx v_audctl2 + bne qs5 + EIF + EIF + IFT FEAT_BASS16 + IFT FEAT_BASS16G1R + lda trackn_command+1+4 + and #$0e + cmp #6 + bne qs4 + lda trackn_audc+1+4 + and #$0f + beq qs4 + ldy trackn_outnote+1+4 + lda frqtabbasslo,y + sta trackn_audf+0+4 + lda frqtabbasshi,y + sta trackn_audf+1+4 + IFT FEAT_COMMAND7VOLUMEONLY&&FEAT_VOLUMEONLYG0R + lda trackn_audc+0+4 + and #$10 + bne qs3a + EIF + lda #0 + sta trackn_audc+0+4 +qs3a + txa + ora #$50 + tax + EIF +qs4 + IFT FEAT_BASS16G3R + lda trackn_command+3+4 + and #$0e + cmp #6 + bne qs5 + lda trackn_audc+3+4 + and #$0f + beq qs5 + ldy trackn_outnote+3+4 + lda frqtabbasslo,y + sta trackn_audf+2+4 + lda frqtabbasshi,y + sta trackn_audf+3+4 + IFT FEAT_COMMAND7VOLUMEONLY&&FEAT_VOLUMEONLYG2R + lda trackn_audc+2+4 + and #$10 + bne qs4a + EIF + lda #0 + sta trackn_audc+2+4 +qs4a + txa + ora #$28 + tax + EIF + EIF +qs5 + stx v_audctl2 + EIF +rmt_p5 + lda v_ainstrspeed + rts + + .if buffer_mode = 0 +SetPokey + ldx #31 +@ lda trackn_audf,x + sta text,x + dex + bpl @- + + IFT STEREOMODE==1 ;* L1 L2 L3 L4 R1 R2 R3 R4 + ldy v_audctl2 + lda trackn_audf+0+4 + ldx trackn_audf+0 +xstastx01 sta $d210 + stx $d200 + lda trackn_audc+0+4 + ldx trackn_audc+0 +xstastx02 sta $d211 + stx $d201 + lda trackn_audf+1+4 + ldx trackn_audf+1 +xstastx03 sta $d212 + stx $d202 + lda trackn_audc+1+4 + ldx trackn_audc+1 +xstastx04 sta $d213 + stx $d203 + lda trackn_audf+2+4 + ldx trackn_audf+2 +xstastx05 sta $d214 + stx $d204 + lda trackn_audc+2+4 + ldx trackn_audc+2 +xstastx06 sta $d215 + stx $d205 + lda trackn_audf+3+4 + ldx trackn_audf+3 +xstastx07 sta $d216 + stx $d206 + lda trackn_audc+3+4 + ldx trackn_audc+3 +xstastx08 sta $d217 + stx $d207 + lda v_audctl +xstysta01 sty $d218 + sta $d208 + ELI STEREOMODE==0 ;* L1 L2 L3 L4 + ldy v_audctl + lda trackn_audf+0 + ldx trackn_audc+0 + sta $d200 + stx $d201 + lda trackn_audf+1 + ldx trackn_audc+1 + sta $d200+2 + stx $d201+2 + lda trackn_audf+2 + ldx trackn_audc+2 + sta $d200+4 + stx $d201+4 + lda trackn_audf+3 + ldx trackn_audc+3 + sta $d200+6 + stx $d201+6 + sty $d208 + ELI STEREOMODE==2 ;* L1 R2 R3 L4 + ldy v_audctl + lda trackn_audf+0 + ldx trackn_audc+0 + sta $d200 + stx $d201 + sta $d210 + lda trackn_audf+1 + ldx trackn_audc+1 + sta $d210+2 + stx $d211+2 + lda trackn_audf+2 + ldx trackn_audc+2 + sta $d210+4 + stx $d211+4 + sta $d200+4 + lda trackn_audf+3 + ldx trackn_audc+3 + sta $d200+6 + stx $d201+6 + sta $d210+6 + sty $d218 + sty $d208 + ELI STEREOMODE==3 ;* L1 L2 R3 R4 + ldy v_audctl + lda trackn_audf+0 + ldx trackn_audc+0 + sta $d200 + stx $d201 + lda trackn_audf+1 + ldx trackn_audc+1 + sta $d200+2 + stx $d201+2 + lda trackn_audf+2 + ldx trackn_audc+2 + sta $d210+4 + stx $d211+4 + sta $d200+4 + lda trackn_audf+3 + ldx trackn_audc+3 + sta $d210+6 + stx $d211+6 + sta $d200+6 + sty $d218 + sty $d208 + EIF + rts + + .endif \ No newline at end of file diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/RMT-Relocator.mac b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/RMT-Relocator.mac new file mode 100644 index 00000000..3826cb93 --- /dev/null +++ b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/RMT-Relocator.mac @@ -0,0 +1,87 @@ + +/* + RMT Relocator v1.1 (16.12.2008) + + Example: + rmt_relocator 'file.rmt' , new_address +*/ + +.macro rmt_relocator + + .get [$100] :1,0,6 // wczytujemy plik do bufora MADS'a + + ert (.get[$100] + .get[$101]<<8) <> $FFFF , 'Bad file format' + +new_add = :2 // nowy adres dla modulu RMT + +old_add = .get[$102] + .get[$103]<<8 // stary adres modulu RMT + +length = .get[$104] + .get[$105]<<8 - old_add + 1 // dlugosc pliku RMT bez naglowka DOS'u + +ofset = new_add-old_add + + .get [old_add-6] :1 + + .put[old_add-4] = .lo(new_add) // poprawiamy nagłówek DOS'a + .put[old_add-3] = .hi(new_add) // tak aby zawieral informacje o nowym + + .put[old_add-2] = .lo(new_add + length - 1) // adresie modulu RMT + .put[old_add-1] = .hi(new_add + length - 1) + +type = .get[old_add+3] + +pinst = .get[old_add+8] + .get[old_add+9]<<8 +pltrc = .get[old_add+10] + .get[old_add+11]<<8 +phtrc = .get[old_add+12] + .get[old_add+13]<<8 +ptlst = .get[old_add+14] + .get[old_add+15]<<8 + + .put[old_add+8] = .lo(pinst+ofset) + .put[old_add+9] = .hi(pinst+ofset) + + .put[old_add+10] = .lo(pltrc+ofset) + .put[old_add+11] = .hi(pltrc+ofset) + + .put[old_add+12] = .lo(phtrc+ofset) + .put[old_add+13] = .hi(phtrc+ofset) + + .put[old_add+14] = .lo(ptlst+ofset) + .put[old_add+15] = .hi(ptlst+ofset) + +// ISTRUMENTS + .rept (pltrc-pinst)/2 + ?tmp = .get[pinst+#*2] + .get[pinst+#*2+1]<<8 + + .put[pinst+#*2] = .lo(?tmp+ofset) + .put[pinst+#*2+1] = .hi(?tmp+ofset) + + .endr + +// TRACKS + .rept phtrc-pltrc + ?tmp = .get[pltrc+#] + .get[phtrc+#]<<8 + + ift ?tmp>0 + .put[pltrc+#] = .lo(?tmp+ofset) + .put[phtrc+#] = .hi(?tmp+ofset) + eif + + .endr + +// TRACK LIST + + ift type='8' + skip=8 + els + skip=4 + eif + + .rept [(old_add+length-ptlst)/skip]+1 + ift .get[ptlst+#*skip]=$fe + ?tmp = .get[ptlst+#*skip+2] + .get[ptlst+#*skip+3]<<8 + .put[ptlst+#*skip+2] = .lo(?tmp+ofset) + .put[ptlst+#*skip+3] = .hi(?tmp+ofset) + eif + .endr + + .sav [old_add] length +.endm diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound-Features.asm b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound-Features.asm new file mode 100644 index 00000000..2d877ef9 --- /dev/null +++ b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound-Features.asm @@ -0,0 +1,40 @@ +;* --------BEGIN-------- + +FEAT_SFX equ 0 +FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable +FEAT_NOSTARTINGSONGLINE equ 0 +FEAT_INSTRSPEED equ 3 +FEAT_CONSTANTSPEED equ 6 ;(0 times) +FEAT_COMMAND1 equ 1 ;(25 times) +FEAT_COMMAND2 equ 0 ;(0 times) +FEAT_COMMAND3 equ 0 ;(0 times) +FEAT_COMMAND4 equ 0 ;(0 times) +FEAT_COMMAND5 equ 1 ;(2 times) +FEAT_COMMAND6 equ 1 ;(4 times) +FEAT_COMMAND7SETNOTE equ 0 ;(0 times) +FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times) +FEAT_PORTAMENTO equ 1 ;(10 times) +FEAT_FILTER equ 1 ;(20 times) +FEAT_FILTERG0L equ 1 ;(20 times) +FEAT_FILTERG1L equ 0 ;(0 times) +FEAT_FILTERG0R equ 0 ;(0 times) +FEAT_FILTERG1R equ 0 ;(0 times) +FEAT_BASS16 equ 0 ;(0 times) +FEAT_BASS16G1L equ 0 ;(0 times) +FEAT_BASS16G3L equ 0 ;(0 times) +FEAT_BASS16G1R equ 0 ;(0 times) +FEAT_BASS16G3R equ 0 ;(0 times) +FEAT_VOLUMEONLYG0L equ 0 ;(0 times) +FEAT_VOLUMEONLYG2L equ 0 ;(0 times) +FEAT_VOLUMEONLYG3L equ 0 ;(0 times) +FEAT_VOLUMEONLYG0R equ 0 ;(0 times) +FEAT_VOLUMEONLYG2R equ 0 ;(0 times) +FEAT_VOLUMEONLYG3R equ 0 ;(0 times) +FEAT_TABLETYPE equ 0 ;(0 times) +FEAT_TABLEMODE equ 0 ;(0 times) +FEAT_TABLEGO equ 0 ;(0 times) +FEAT_AUDCTLMANUALSET equ 0 ;(0 times) +FEAT_VOLUMEMIN equ 0 ;(0 times) +FEAT_EFFECTVIBRATO equ 1 ;(2 times) +FEAT_EFFECTFSHIFT equ 0 ;(0 times) +;* --------END-------- \ No newline at end of file diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound.asm b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound.asm new file mode 100644 index 00000000..baba3168 --- /dev/null +++ b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound.asm @@ -0,0 +1,94 @@ +; +; >>> Fuji Demo by JAC! <<< +; +; Sound routines. +; +; @com.wudsn.ide.asm.mainsourcefile=..\Fuji.asm + + + .proc sound +STEREOMODE = 0 ;0 => compile RMTplayer for mono 4 tracks +; ;1 => compile RMTplayer for stereo 8 tracks +; ;2 => compile RMTplayer for 4 tracks stereo L1 R2 R3 L4 +; ;3 => compile RMTplayer for 4 tracks stereo L1 L2 R3 R4 +; +; + +zp = 203 ;13 bytes of zero pages +player = $2400 ;Must be at page boundary, 1k before are used as scratch pad +init = player ;=song number 0...255, =lo byte of module, =hi byte of module +play = player+3 ;Play 1 step +stop = player+9 ;All sounds off +module = $3000 ;Target address of RMT module + + icl "snd/RMT-Relocator.mac" ;Include relocator + + org sound.player + icl "snd/RMT-Player.asm" ;Include RMT player routine + +; .if buffer_mode = 1 +; .proc buffer ;Buffer for multi speed replay +; STEPS = 3 +; +; .proc copy_to_buffer ;Copy replay result to buffer +;count = *+1 +; ldx #0 +; mva v_audctl data.v_audctl,x +; .rept TRACKS +; mva trackn_audf+# data.trackn_audf+#*STEPS,x +; mva trackn_audc+# data.trackn_audc+#*STEPS,x +; .endr +; +; inx +; cpx #STEPS +; sne +; ldx #0 +; stx count +; rts +; .endp +; +; .proc copy_from_buffer ;Copy buffer to replay result +;count = *+1 +; ldx #0 +; .rept TRACKS +; lda data.trackn_audf+#*STEPS,x +; ldy data.trackn_audc+#*STEPS,x +; sta $d200+#*2 +; sty $d201+#*2 +; .endr +; mva data.v_audctl,x $d208 +; +; inx +; cpx #STEPS +; sne +; ldx #0 +; stx count +; rts +; .endp +; +; .local data +; .local v_audctl +;:STEPS .byte 0 +; .endl +; +; .local trackn_audf +;:STEPS*TRACKS .byte 0 +; .endl +; +; .local trackn_audc +;:STEPS*TRACKS .byte 0 +; .endl +; .endl +; +; .endp +; +; .endif + + org sound.module ;Inxlude stripped RMT +; RMT feature definitions file +; For optimizations of RMT player routine to concrete RMT module only! + icl "snd/Sound-Features.asm" + rmt_relocator 'snd/Sound.rmt' sound.module + .endp + + diff --git a/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound.rmt b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound.rmt new file mode 100644 index 00000000..f5ad7e37 Binary files /dev/null and b/com.wudsn.ide.ref/ASM/Atari8/MADS/Fuji/snd/Sound.rmt differ diff --git a/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.chr b/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.chr index 2e680b25..a3311e9a 100644 Binary files a/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.chr and b/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.chr differ diff --git a/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.png b/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.png index cca31706..457975de 100644 Binary files a/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.png and b/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.png differ diff --git a/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.png.cnv b/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.png.cnv index ef7c12b2..d069b8b0 100644 --- a/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.png.cnv +++ b/com.wudsn.ide.ref/GFX/Atari8/ImageToFiles/Graphics0/Charset.png.cnv @@ -1,32 +1,24 @@ #WUDSN IDE Converter Parameters -#Tue Jun 10 23:37:53 CEST 2014 +#Fri Aug 30 12:10:47 CEST 2019 converterDirection=IMAGE_TO_FILES -filesConverterParameters.converterId=com.wudsn.ide.gfx.converter.generic.CharSet1x1HiresConverter +filesConverterParameters.converterId= filesConverterParameters.imageAspect.factorX=1 filesConverterParameters.imageAspect.factorY=1 filesConverterParameters.displayAspect.factorX=1 filesConverterParameters.displayAspect.factorY=1 filesConverterParameters.displayShrinkToFit=false filesConverterParameters.displayZoomToFit=true -filesConverterParameters.sourceFiles=1 -filesConverterParameters.sourceFiles.0.path=Charset.chr -filesConverterParameters.sourceFiles.0.offset=0 +filesConverterParameters.sourceFiles=0 filesConverterParameters.imageFilePath= -filesConverterParameters.columns=32 -filesConverterParameters.rows=4 +filesConverterParameters.columns=40 +filesConverterParameters.rows=24 filesConverterParameters.spacingColor.red=0 filesConverterParameters.spacingColor.green=0 filesConverterParameters.spacingColor.blue=128 filesConverterParameters.spacingWidth=0 filesConverterParameters.palette=HIRES_1 filesConverterParameters.paletteType=ATARI_DEFAULT -filesConverterParameters.paletteRGBs=2 -filesConverterParameters.paletteRGBs.0.red=0 -filesConverterParameters.paletteRGBs.0.green=0 -filesConverterParameters.paletteRGBs.0.blue=0 -filesConverterParameters.paletteRGBs.1.red=255 -filesConverterParameters.paletteRGBs.1.green=255 -filesConverterParameters.paletteRGBs.1.blue=255 +filesConverterParameters.paletteRGBs=0 imageConverterParameters.converterId=com.wudsn.ide.gfx.converter.generic.CharSet1x1HiresConverter imageConverterParameters.imageAspect.factorX=1 imageConverterParameters.imageAspect.factorY=1 @@ -36,7 +28,7 @@ imageConverterParameters.displayShrinkToFit=false imageConverterParameters.displayZoomToFit=true imageConverterParameters.imageFilePath=Charset.png imageConverterParameters.targetFiles=10 -imageConverterParameters.targetFiles.0.path=Charset.png.chr +imageConverterParameters.targetFiles.0.path=Charset.chr imageConverterParameters.targetFiles.1.path= imageConverterParameters.targetFiles.2.path= imageConverterParameters.targetFiles.3.path= diff --git a/com.wudsn.ide.snd/META-INF/MANIFEST.MF b/com.wudsn.ide.snd/META-INF/MANIFEST.MF index 5514d8e4..583efc4f 100644 --- a/com.wudsn.ide.snd/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.snd/META-INF/MANIFEST.MF @@ -18,3 +18,4 @@ Bundle-ClassPath: ., lib/atari8bit/asap.jar, lib/c64/jsidplay2.jar Bundle-Vendor: Peter Dell +Automatic-Module-Name: com.wudsn.ide.snd diff --git a/com.wudsn.ide.tst/META-INF/MANIFEST.MF b/com.wudsn.ide.tst/META-INF/MANIFEST.MF index aab784ee..25d1d466 100644 --- a/com.wudsn.ide.tst/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.tst/META-INF/MANIFEST.MF @@ -14,3 +14,4 @@ Require-Bundle: org.eclipse.ui, org.eclipse.ui.ide;bundle-version="3.9.1" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy; exclude:="com.wudsn.ide.tst.contenttypes" +Automatic-Module-Name: com.wudsn.ide.tst diff --git a/com.wudsn.ide.tst/src/com/wudsn/ide/tst/editors/ATASCIDocumentProvider.java b/com.wudsn.ide.tst/src/com/wudsn/ide/tst/editors/ATASCIDocumentProvider.java index d03e076a..27472ed5 100644 --- a/com.wudsn.ide.tst/src/com/wudsn/ide/tst/editors/ATASCIDocumentProvider.java +++ b/com.wudsn.ide.tst/src/com/wudsn/ide/tst/editors/ATASCIDocumentProvider.java @@ -15,7 +15,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.core.runtime.SubMonitor; import org.eclipse.jface.text.IDocument; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.PlatformUI; @@ -156,9 +156,10 @@ public class ATASCIDocumentProvider extends FileDocumentProvider { } else { try { monitor.beginTask("Saving...", 2000); - ContainerCreator creator = new ContainerCreator(file.getWorkspace(), file.getParent().getFullPath()); - creator.createContainer(new SubProgressMonitor(monitor, 1000)); - file.create(stream, false, new SubProgressMonitor(monitor, 1000)); + ContainerCreator creator = new ContainerCreator(file.getWorkspace(), + file.getParent().getFullPath()); + creator.createContainer(SubMonitor.convert(monitor, 1000)); + file.create(stream, false, SubMonitor.convert(monitor, 1000)); } finally { monitor.done(); }