De Simple SNES Sound Engine is een in SPC700 assembly geschreven sound-engine voor de Super Nintendo Entertainment System. Het project is bedoeld als basisinterface voor gebruikers die volledige controle willen over hun eigen SNES-sounddriver.
Technische details:
- De engine wordt gecompileerd met de SPCASM-compiler.
- Het resultaat is een
.BIN-bestand dat in de game ROM wordt opgenomen en naar de APU wordt overgedragen.
- Er is een belangrijke waarschuwing: bij de overdracht naar de APU moeten de eerste 0x200 bytes worden overgeslagen om het startup-programma te behouden.
Toekomstvisie: Momenteel is de code een snapshot van het spel 〇 Star. Toekomstige updates zullen de driver generieker maken, met functies voor het beperken tot één nummer in het geheugen, betere dataoverdracht en de mogelijkheid om nummers te pauzeren en te hervatten.
SimpleSNESSoundEngine
De Simple SNES Sound Engine is geschreven in SPC700 assembly, conform de SPCASM-compiler. Het doel is om een basisinterface voor de sound engine te bieden aan gebruikers die granulaire controle willen over hun eigen SNES-sounddriver.
De versie van SPC700 assembly van de SPCASM-compiler is goed gedocumenteerd. Degenen die aangepaste wijzigingen aan de sound engine willen aanbrengen, doen er goed aan bekend te zijn met de instructieset.
De SPCASM-compiler is beschikbaar als web-app, maar voor de doeleinden van dit project wordt het gecompileerde programma gebruikt om de sound engine lokaal te compileren.
Compileren
De lokale SPCASM-compiler wordt gebruikt om het sounddriver-programma te compileren:
spcasm -f plain soundengine-spc700.s soundEngine-SPC700.BIN
Het resulterende soundEngine-SPC700.BIN-bestand kan worden opgenomen in de SNES-game ROM en vervolgens worden overgedragen naar de APU.
Let op: dit binaire bestand vertegenwoordigt de volledige geheugenruimte van 0x000 tot 0xFFFF. Als u het startup-programma van 0x200 bytes wilt behouden voor de overdracht van gegevens, moeten de eerste 0x200 bytes van het bestand worden overgeslagen bij de overdracht naar de APU!
Toekomstig werk
Momenteel is de code van de sound engine een snapshot van de sound engine zoals aanwezig in het SNES-spel 〇 Star. Toekomstige wijzigingen zullen leiden tot een meer generieke versie van de sound driver, inclusief:
- Alleen één nummer tegelijk in het geheugen toegestaan;
- Commando's om voor te bereiden op dataoverdracht voor het vervangen van het huidige nummer;
- Commando's om een nummer te pauzeren en te hervatten.
Deze functies zullen binnen enkele maanden worden uitgerold.
SimpleSNESSoundEngine
De Simple SNES Sound Engine is geschreven in SPC700 assembly, conform de SPCASM-compiler. Het doel is om een basisinterface voor de sound engine te bieden aan gebruikers die granulaire controle willen over hun eigen SNES-sounddriver.
De versie van SPC700 assembly van de SPCASM-compiler is goed gedocumenteerd. Degenen die aangepaste wijzigingen aan de sound engine willen aanbrengen, doen er goed aan bekend te zijn met de instructieset.
De SPCASM-compiler is beschikbaar als web-app, maar voor de doeleinden van dit project wordt het gecompileerde programma gebruikt om de sound engine lokaal te compileren.
Compileren
De lokale SPCASM-compiler wordt gebruikt om het sounddriver-programma te compileren:
spcasm -f plain soundengine-spc700.s soundEngine-SPC700.BIN
Het resulterende soundEngine-SPC700.BIN-bestand kan worden opgenomen in de SNES-game ROM en vervolgens worden overgedragen naar de APU.
Let op: dit binaire bestand vertegenwoordigt de volledige geheugenruimte van 0x000 tot 0xFFFF. Als u het startup-programma van 0x200 bytes wilt behouden voor de overdracht van gegevens, moeten de eerste 0x200 bytes van het bestand worden overgeslagen bij de overdracht naar de APU!
Toekomstig werk
Momenteel is de code van de sound engine een snapshot van de sound engine zoals aanwezig in het SNES-spel 〇 Star. Toekomstige wijzigingen zullen leiden tot een meer generieke versie van de sound driver, inclusief:
- Alleen één nummer tegelijk in het geheugen toegestaan;
- Commando's om voor te bereiden op dataoverdracht voor het vervangen van het huidige nummer;
- Commando's om een nummer te pauzeren en te hervatten.
Deze functies zullen binnen enkele maanden worden uitgerold.