mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-23 13:05:11 +00:00
prepare to add some code
This commit is contained in:
parent
d73c2346c4
commit
5acb6daef6
4 changed files with 88 additions and 1 deletions
49
src/asm/68k/amigatest/README.md
Normal file
49
src/asm/68k/amigatest/README.md
Normal file
|
@ -0,0 +1,49 @@
|
|||
# Amiga verification export format
|
||||
|
||||
"ROM" export format exclusively for verifying whether the Amiga emulation in Furnace is correct.
|
||||
|
||||
do not assume this is the actual ROM export! it is nothing more than a register dump kind of thing...
|
||||
|
||||
# process
|
||||
|
||||
enable the setting in Furnace to unlock the export option by adding this to furnace.cfg:
|
||||
|
||||
```
|
||||
iCannotWait=true
|
||||
```
|
||||
|
||||
go to file > export Amiga validation data...
|
||||
|
||||
put sample.bin and seq.bin in this directory.
|
||||
|
||||
compile with vasm:
|
||||
|
||||
```
|
||||
vasmm68k_mot -Fhunkexe -kick1hunks player.s
|
||||
```
|
||||
|
||||
run a.out on Amiga. it should play the exported song.
|
||||
|
||||
# sequence format
|
||||
|
||||
## 00-0F: global
|
||||
|
||||
- 00: do nothing
|
||||
- 01: next tick
|
||||
- 02 xx: wait
|
||||
- 03 xxxx: wait
|
||||
- 06 xxxx: write to DMACON
|
||||
- 0a xxxx: write to INTENA
|
||||
- 0e xxxx: write to ADKCON
|
||||
|
||||
## 10-1F: per-channel (10, 20, 30, 40)
|
||||
|
||||
- 10 xxxxxx yyyy zzzzzz wwww: set loc/len
|
||||
- x: loc
|
||||
- y: len
|
||||
- z: loc after interrupt
|
||||
- w: len after interrupt
|
||||
- 12 xxxx yy: initialize wavetable (xxxx: pos; yy: length)
|
||||
- 16 xxxx: set period
|
||||
- 18 xx: set volume
|
||||
- 1a xxxx: set data
|
32
src/asm/68k/amigatest/player.s
Normal file
32
src/asm/68k/amigatest/player.s
Normal file
|
@ -0,0 +1,32 @@
|
|||
; Furnace validation player code
|
||||
; this is NOT the ROM export you're looking for!
|
||||
|
||||
; incomplete!
|
||||
|
||||
VPOSR = $dff004
|
||||
COLOR00 = $dff180
|
||||
|
||||
cseg
|
||||
move.l #0,d0
|
||||
|
||||
main:
|
||||
jsr waitVBlank
|
||||
|
||||
move.w curColor,d0
|
||||
move.w d0,COLOR00
|
||||
addi.w #1,d0
|
||||
move.w d0,curColor
|
||||
|
||||
jmp main
|
||||
|
||||
waitVBlank:
|
||||
move.l (VPOSR),d0
|
||||
and.l #$1ff00,d0
|
||||
cmp.l #$12c00,d0
|
||||
bne waitVBlank
|
||||
rts
|
||||
|
||||
data_c
|
||||
|
||||
curColor:
|
||||
dc.w 0
|
|
@ -1369,6 +1369,7 @@ class FurnaceGUI {
|
|||
int oneDigitEffects;
|
||||
int disableFadeIn;
|
||||
int alwaysPlayIntro;
|
||||
int iCannotWait;
|
||||
unsigned int maxUndoSteps;
|
||||
String mainFontPath;
|
||||
String patFontPath;
|
||||
|
@ -1509,6 +1510,7 @@ class FurnaceGUI {
|
|||
oneDigitEffects(0),
|
||||
disableFadeIn(0),
|
||||
alwaysPlayIntro(0),
|
||||
iCannotWait(0),
|
||||
maxUndoSteps(100),
|
||||
mainFontPath(""),
|
||||
patFontPath(""),
|
||||
|
|
|
@ -2416,6 +2416,7 @@ void FurnaceGUI::drawSettings() {
|
|||
// "Debug" - toggles mobile UI
|
||||
// "Nice Amiga cover of the song!" - enables hidden systems (YMU759/SoundUnit/Dummy)
|
||||
// "42 63" - enables all instrument types
|
||||
// "????" - enables stuff
|
||||
if (ImGui::BeginTabItem("Cheat Codes")) {
|
||||
ImVec2 settingsViewSize=ImGui::GetContentRegionAvail();
|
||||
settingsViewSize.y-=ImGui::GetFrameHeight()+ImGui::GetStyle().WindowPadding.y;
|
||||
|
@ -2619,6 +2620,7 @@ void FurnaceGUI::syncSettings() {
|
|||
settings.disableFadeIn=e->getConfInt("disableFadeIn",0);
|
||||
settings.alwaysPlayIntro=e->getConfInt("alwaysPlayIntro",0);
|
||||
settings.cursorFollowsOrder=e->getConfInt("cursorFollowsOrder",1);
|
||||
settings.iCannotWait=e->getConfInt("iCannotWait",0);
|
||||
|
||||
clampSetting(settings.mainFontSize,2,96);
|
||||
clampSetting(settings.patFontSize,2,96);
|
||||
|
@ -2734,6 +2736,7 @@ void FurnaceGUI::syncSettings() {
|
|||
clampSetting(settings.disableFadeIn,0,1);
|
||||
clampSetting(settings.alwaysPlayIntro,0,3);
|
||||
clampSetting(settings.cursorFollowsOrder,0,1);
|
||||
clampSetting(settings.iCannotWait,0,1);
|
||||
|
||||
if (settings.exportLoops<0.0) settings.exportLoops=0.0;
|
||||
if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0;
|
||||
|
@ -2944,6 +2947,7 @@ void FurnaceGUI::commitSettings() {
|
|||
e->setConf("disableFadeIn",settings.disableFadeIn);
|
||||
e->setConf("alwaysPlayIntro",settings.alwaysPlayIntro);
|
||||
e->setConf("cursorFollowsOrder",settings.cursorFollowsOrder);
|
||||
e->setConf("iCannotWait",settings.iCannotWait);
|
||||
|
||||
// colors
|
||||
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
||||
|
|
Loading…
Reference in a new issue