- BotBrs with Hardware
- General Tips
- Hardware-Specific Instructions and Tips
Hardware rendering refers to playing back and recording entries on real hardware, as opposed to using output from emulation. This applies to formats for consoles or computers that have non-modern sound chips, like nsf
See the hardware render
tag for entries that have been hardware rendered.
BotBrs with Hardware
- Model 1 VA6 Sega Genesis (for sgen
- NTSC C64 (for sid
; both 6581 and 8580 SID, both untested for a while though so no guarantees)
- NES (for just nsf
for now, haven't done expansion audio mod yet)
- SNES (for spc
- SudoMaker RetroWave OPL3, can render any adlib
format that runs natively on DOS using dosbox-x. I can also render the mptm format using the OpenMPT VGM output mod
, just make sure your file contains less than 18 channels and uses adlib instruments only.
- Atari STe, can render sndh files (*.snd, *.sndh) for the aym (format)
- Sega Genesis / MD
(discrete & asic versions + mod to improve sound)
, specifically OPL3
via a toshiba laptop
+ prosound mod
- Game Gear / SMS
You can ask any of these fellow BotBrs for hardware renders on your entries. And if you have the hardware, tools, and willingness to offer hardware renders, please add yourself to the list :D/
To hardware render an entry, you'll generally need the hardware itself, some way to get the entry onto the hardware (such as a flash cart
), and some way to record the audio.
The hardware rendering process generally goes like this:
1. Prepare entry for playback on hardware (e.g. convert to runnable format, put on SD card, put in flash cart)
2. Connect hardware to whatever you're using to record (e.g. computer line-in)
3. Start recording
4. (optional, see tip below) If applicable, disconnect video output
5. Start playing back entry on hardware while recording
6. (optional) Post-process recording - trim audio, apply fade-out for loops, adjust volume level, etc.
Some tips around improving the quality of your recording/render:
- Make sure you're recording at an appropriate sample rate and bit depth. 44.1kHz/16-bit should be good enough, especially for MP3 renders. You can go higher if you want!
- If possible, when recording, try to set the volume from your hardware as high as possible without clipping the audio
. This can improve the signal-to-noise ratio
from your recording, and you can always reduce the volume to an acceptable level after it's been recorded.
- For some hardware, disconnecting the video cable when recording can help reduce noise from interference/ground loop
. You'll want to compare spectrograms from a recording with and without the video cable connected to see if this makes a difference.
Hardware-Specific Instructions and Tips
Formats that can be hardware rendered on a NES/Famicom console:
† (only if using NES system)
The formats marked with * may use expansion sound (see note below in Hardware section). The formats marked with † are tracker formats and need to be exported to a .nes or .nsf to be played back on your console (or in the case of ntrq, the .sav file can be used along with the NTRQ ROM).
Software and Hardware
To get entries onto your console, there are multiple flash carts you can use, such as the PowerPak
or EverDrive N8 PRO
. Both of these flash carts have built-in NSF players, so you can just put your .nsf files on your memory card and play them off your flash cart. The EverDrive N8 NES
can also be used, however it does not have a built-in NSF player and will require some other way to play back NSFs. There are also the TNS-HFC5/TNS-HFX4 cartridges
specifically for playing back NSFs, although these are very hard to get.
If you are using a NES, entries that use expansion audio will require modding your console by soldering a resistor onto the motherboard - here's a guide on how to do that
. Also, if using a flash cart, note that the expansion chips are still technically emulated via FPGA, and you would need a TNS-HFX4 + a cartridge containing the necessary expansion chip(s) to have a "truly authentic" hardware render.
While most NSFs are written for NTSC consoles, some may use PAL which uses different tuning. Also, some NSFs may be "overclocked", i.e. they update audio state at non-standard rates other than the usual 60 Hz or 50 Hz for NTSC/PAL. Support for these NSFs may vary depending on how you're playing NSFs back on your hardware.
If an NSF doesn't play properly on your player/cart of choice, you can try using EZNSF
to convert NSF(s) into a runnable .nes ROM, although this only works for certain types of NSFs (no expansion or overclocking supported, among other technical restrictions).
Formats that can be hardware rendered on a Genesis/Mega Drive console:
(Genesis/MD consoles include the SN76489 sound chip used by the SMS)
(only if using SEGA Genesis or SEGA Master System systems)
Software and Hardware
Note that there are different console hardware revisions, some with better or worse audio quality than others. The ideal revision to use seems to be a non-VA7 Model 1 Genesis/Mega Drive. More details are in this Sega-16 forum thread
To get entries onto your console, there are flash carts you can use such as the Mega EverDrive X3
. These flash carts let you put .bin files on an SD card and run them on your console.
There are multiple tools you can use to play back .vgm files on your console. DeadFish Shitware's VGM_PLAY
can compile .vgm files into a .bin ROM that you can run on your console. There is also a modified version of VGM_Play
which is supposed to result in cleaner and more accurate recordings (see https://16bap.theclassicgamer.net/contribute-general-guidelines/
for more details). Alternatively, there are a set of XGM tools in SGDK
that can be used to convert .vgm files into .xgc files which can then be compiled into a player ROM. For SMS entries, VGM_Play will also work for playing back SMS .vgm files on Genesis/MD consoles, though there is also Maxim's VGM Player
specifically for SMS.
If using the stock VGM_Play from DeadFish Shitware, some options tweaking may be needed - duplicate write mode should be set to "Hardware Mode" and playback delay scale should be set to around 0.982 since the default scale is too slow for some reason. Strangely enough, DefleMask's Genesis ROM export is based on VGM_Play but doesn't seem to have playback speed issues, though it could also be a custom version. (funute
found that playback delay scale value through experimentation, so ask him if you're wondering about that.)
Software and Hardware
There are two significant hardware revisions to be aware of: the original C64 and the newer C64C. The original C64 uses the 6581 SID, whereas the newer C64C revision uses the 8580 SID. There are some major differences between SID models and even between some 6581 SID chip revisions, mostly in filter characteristics and mixed waveform behavior. There are also timing and tuning differences between NTSC and PAL machines. Therefore, you want to make sure that the entry you're rendering is written for the SID model and region that your C64 model has. If you try to play a SID written for the 6581 on a machine with an 8580 SID or vice versa, chances are the sound won't match what was intended for the entry. Also, most SID tracks are written for PAL instead of NTSC, and if you try to play a PAL SID on an NTSC C64 or vice versa, the timing and tuning will probably be off.
If you have an NTSC C64, you can "convert" it into a PAL C64 by changing out the VIC-II chip and clock crystal on the board (there are guides on how to do this like this guide
or this video
), or you could install a PAL/NTSC switch on your board. However, do note that the SID models are NOT
simply interchangeable due to voltage differences (6581 uses 12V, 8580 uses 9V), so you won't
be able to just put a 6581 SID in a newer C64C board or put a 8580 SID in an older C64 board.
To get files onto your C64, you can get devices like the SD2IEC
or the 1541 Ultimate
which emulate the Commodore 1541 floppy disk drive but use an SD card instead of floppy disks. There may be other ways to get files from your PC to your C64, but using one of those cartridge devices is likely the easiest way to do it. For playing .sid files, there is sidplay64
that will play .sid files off your drive/SD card, or alternatively you can use PSID64
to convert .sid files into .prg files that you can then run on your C64.