Homebrew SCFW: Bleeding-edge modular kernel branch

  • Thread starter Thread starter OmDRetro
  • Start date Start date
  • Views Views 13,416
  • Replies Replies 26
  • Likes Likes 6

OmDRetro

Well-Known Member
Member
Joined
Apr 23, 2024
Messages
100
Reaction score
101
Trophies
0
XP
298
Country
Philippines
INFO: If you're unaware of what the SCFW project is, please check the main thread under the "Connected thread" section or click here.

This thread is primarily for those who'd like to test out/play with new revisions of the kernel that have yet to be pushed to the main branch.

Installation

Download the zip file and extract the contents to the root directory of the sdcard.
This should replace the existing kernel.gba along with a few emulators bundled in.

Differences between this and the main kernel:
  • PCEAdvance support ✅
    • Loads PC-Engine/TurboGrafx-16 games (*.pce)
    • ❌DOES NOT SUPPORT SOFT RESET FUNCTION (Cannot patch soft reset on compilation ROM)❌
  • SMSAdvance support ✅
    • Loads Sega Master System games (*.sms)
    • Loads Game Gear games (*.gg)
    • Loads Sega Game 1000 / Sega 1000 games (*.sg)
    • Custom BIOS loading support. Can be toggled within kernel settings
  • PocketNES support ✅
    • Loads NES / Famicom games (*.nes)
  • Goomba support ✅
    • Loads Game Boy games (*.gb)
    • Loads Game Boy Color games (*.gbc)
  • WasabiGBA support ✅
    • Loads Watara/Quickshot Supervision games (*.sv)
    • Custom BIOS loading support. Can be toggled within kernel settings
  • NGPGBA support ✅
    • Loads Neo Geo Pocket games (*.ngp)
    • Loads Neo Geo Pocket Color games (*.ngc)
    • Custom BIOS loading support. Can be toggled within kernel settings
  • HVCA support ✅
    • Loads Famicom Disk System games (*.fds)
    • Acts as a media player for Nintendo Sound Files (*.nsf)
    • Currently a stripped down version of the original HVCA
  • SwanGBA support ✅
    • Loads Benesse Pocket Challenge V2 games (*.pc2)
    • Loads WonderSwan games (*.ws)
    • Loads WonderSwan Color games (*.wsc)
  • DrSMS support ✅
    • Loads Sega Master System games (*.sms)
      • Supports FM audio ( Sega Master System Mark III )
    • Loads Game Gear games (*.gg)
    • Can now toggle emulator priority and choose between SMSAdvance or DrSMS in order to load GG/SMS games.
  • E-Book Advance support ✅
    • Loads TXT files (*.txt)
  • Music Player Advance 2 support ✅
    • Loads Music Player Advance files (*.mpa)
    • Loads Music Player Advance Compilation files (*.mpac)
    • MPA2-Compilation-Tools can be used to create *.MPAC files
Homebrew App / Emulator observations:
  • ✅ Consistently runs on:
    • GBA
    • NDS / NDSL Game Boy mode
  • 🟨 Not all applications/emulators consistently run on:
    • EXEQ Game Box (clone console)
    • Digi Retroboy
NOTE: For those who use clones, you may download a copy of a completely functional bundle of emulators from this repository

Emulator quirks:

[TABLE=full]
[TR]
[TD]
Emulator
[/TD]

[TD]Target System / Additional feature[/TD]
[TD]Quit to firmware[/TD]
[TD]Soft reset support[/TD]
[TD]Modular[/TD]
[/TR]
[TR]
[TD]Goomba / Super Goomba / Jagoomba Color[/TD]
[TD]Game Boy[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]Goomba Color / Jagoomba Color[/TD]
[TD]Game Boy Color[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]NGPGBA[/TD]
[TD]Neo Geo Pocket / Color[/TD]
[TD]🟨[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]PCEAdvance[/TD]
[TD]NEC PC-Engine / TurboGrafx-16[/TD]
[TD]❌[/TD]
[TD]❌[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]PocketNES[/TD]
[TD]Nintendo Entertainment System / Family Computer[/TD]
[TD]🟨[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]SMSAdvance[/TD]
[TD]Sega Game 1000 / Sega 1000[/TD]
[TD]❌[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]SMSAdvance[/TD]
[TD]Sega Game Gear[/TD]
[TD]❌[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]SMSAdvance[/TD]
[TD]Sega Master System[/TD]
[TD]❌[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]WasabiGBA[/TD]
[TD]Watara/Quickshot Supervision[/TD]
[TD]🟨[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]HVCA[/TD]
[TD]Famicom Disk System / NSF player[/TD]
[TD]❌[/TD]
[TD]❌[/TD]
[TD]🔶[/TD]
[/TR]
[TR]
[TD]SwanGBA[/TD]
[TD]WonderSwan / WonderSwan Color / Benesse Pocket Challenge V2[/TD]
[TD]❌[/TD]
[TD]✅[/TD]
[TD]✅[/TD]
[/TR]
[TR]
[TD]DrSMS[/TD]
[TD]Sega Master System Mark III[/TD]
[TD]❌[/TD]
[TD]✅[/TD]
[TD]🔶[/TD]
[/TR]
[TR]
[TD]DrSMS[/TD]
[TD]Game Gear[/TD]
[TD]❌[/TD]
[TD]✅[/TD]
[TD]🔶[/TD]
[/TR]
[/TABLE]


LEGEND:

  • 🟨 ~ Varies per fork / version OR works with some caveats(buggy). Use with caution
  • 🔶 ~ Requires some technical know-how to get working / Modular to an extent, but requires additional work.
  • ❌ ~ Unsupported / Not functioning as intended
  • ✅ ~ Supported / Works as intended

NOTE: Emulator binaries can be improved upon and can be made compatible with the kernel just like Goomba.
  • IF QUIT TO FIRMWARE DOESN'T WORK, USE THE SOFT RESET METHOD TO QUIT TO FIRMWARE.
    • Soft reset key combination: START + SELECT + A + B

Observation NOTES:
  • Some clones / GBAoaC devices such as the EXEQ Game Box SP don't play nice with flash carts as it doesn't have the same wait time. Thus, emulator ROMs boot faster and the flash cart does not have enough time to prepare. There's a workaround for this by forcing the cart to load up splash images* as mentioned in this repository
    • Alternative method for GBAOC devices:
      Create a ROM compilation and sideload the resulting gba file.
      This process is tedious, but it works best for clones like these.
  • WARNING: The cart appears to not have enough time to properly load both emulator and ROM if you skip the BIOS. It's better to leave that kernel option "Boot games through BIOS" as 1 (on).

Planned features / To be decided:

"This is a FOSS project. Open source is ideally better for a modular open source kernel." - Me, probably :P


Links

Connected thread:

Credits
  • @metroid maniac - Main developer
  • @OmDRetro - Enhancement for the kernel
  • @Dwedit & @EvilJagaGenius - Goomba Color fork version v0.5 bundled in the zip file
  • @Asaki - Super Goomba fork version 2.0 bundled in the zip file.
  • @loopy and @FluBBa - PocketNES build version 9.98 bundled in the zip file
  • @FluBBa
    • SMSAdvance build version 2.5
    • PCEAdvance build version 7.5
    • WasabiGBA build version 0.2.4
    • NGPGBA build version 0.5.7
    • SwanGBA build version 0.6.7
  • OUTSIDE-agb (not part of this forum) & @metroid maniac
    • Home Video Computer Advance build version 1.40
    • @metroid maniac 's modified HVCA works well on SCFW.
  • NEiM0D
    • Music Player Advance 2 ~ Unknown build version.
  • Reesy & @metroid maniac
    • DrSMS build version 6 (pogo shell plugin version)
    • @metroid maniac 's modified DrSMSv6 pogoshell version works well on SCFW.
Changelog (Last 3 changes):
  • Kernel revision scfw-0.5.2-WSwan-B-2024-11-05v0003
    • Revised SwanGBA support
      • Old builds of SwanGBA(versions prior to 0.6.6) will NOT work on this kernel.
  • Kernel revision scfw-0.5.2-MPA-hotfix-2024-11-03v0000
    • Hotfix build
      • Fixes an issue that can cause the SuperCard to lockup upon loading saves.
  • Kernel revision scfw-0.5.2-MPA-2024-08-01v0001
    • Added E-Book Advance support
      • Loads TXT files (*.txt)
      • Can switch viewing mode in kernel settings
    • Added Music Player Advance 2 support
      • Loads Music Player Advance files (*.mpa)
      • Loads Music Player Advance Compilation files (*.mpac)

Post automatically merged:


*Possible* F.A.Q. section:

Is it possible to use other forks of Goomba?

Yes, within the scfw folder you can replace either gb.gba or gbc.gba with your goomba fork of choice. Just be sure to keep the naming convention as is.

I.E.
  • If replacing the Game Boy emulator, simply rename the fork to gb.gba and place it in the scfw folder
  • If replacing the Game Boy Color emulator, simply rename the fork to gbc.gba and place it in the scfw folder

Is it possible to use other forks of PocketNES?
Yes, much like Goomba, you just have to rename your preferred pocketNES fork/binary to nes.gba and place it within the scfw folder.

Is it possible to use other forks of SMSAdvance?
Yes, you just have to rename your preferred SMSAdvance fork/binary to smsa.gba and place it within the scfw folder.

Is it possible to use other forks of PCEAdvance?
Yes, you just have to rename your preferred PCEAdvance fork/binary to pcea.gba and place it within the scfw folder.

Is it possible to use other forks of WasabiGBA?
Yes, you just have to rename your preferred WasabiGBA fork/binary to wsv.gba and place it within the scfw folder.

Is it possible to use other forks of NGPGBA?
Yes, you just have to rename your preferred NGPGBA fork/binary to ngp.gba and place it within the scfw folder.

I'm unable to load Famicom Disk System/FDS games, what gives?
The FDS bios is not included for legal reasons
. You can either dump or download one over the internet and rename it to disksys.rom and place it in x:/scfw/hvca/

FDS ROMs are boot-looping or I can't get past the legal intro text.
Simply power cycle your Game Boy Advance / EXEQ Game Box SP and load the ROM again.


Is it possible to use other forks of SwanGBA?
Yes, you just have to rename your preferred SwanGBA fork/binary to bwsc.gba and place it within the scfw folder.

Is it possible to use other versions of DrSMS?
Yes, but I do NOT recommend using older or buggier versions of DrSMS. You can if you want to though, but it will require some technical know-how to get it working.

NOTE:

  • For SuperCard SD, Mini SD, and Micro SD versions, please download the respective zip with prefix scfw-*
  • For SuperCard lite micro SD version, please download the respective zip with prefix scfw-sclite-*
 

Attachments

Last edited by OmDRetro,
pokemon crystal is super buggy and unstable and the second time i started it my gba sp power tripped and rebooted, links awakening DX worked fine tho
 
Last edited by huncho,
pokemon crystal is super buggy and unstable and the second time i started it my gba sp power tripped and rebooted, links awakening DX worked fine tho

The graphical issues that you see are entirely dependent on the emulator used. It is not related to the firmware based on what I can tell so far.

You may refer to the compatibility list here for the current Goomba fork I bundled in the zip file.

Section "P" indicates that Pokemon: Crystal has graphical issues on dwedit's goomba fork I bundled in the zip file.
Pokemon Crystal Support.png


I'd suggest utilizing the Jagoomba Color emulator to see if it's fixed on that fork of Goomba.

There's also another fork called Super Goomba, but this version doesn't support GBC games.

Also, I'll be setting up a bug reporting form for future reports. So it wouldn't add more clutter to the thread :)
 
  • Like
Reactions: huncho and zfreeman
The graphical issues that you see are entirely dependent on the emulator used. It is not related to the firmware based on what I can tell so far.

You may refer to the compatibility list here for the current Goomba fork I bundled in the zip file.

Section "P" indicates that Pokemon: Crystal has graphical issues on dwedit's goomba fork I bundled in the zip file.
View attachment 440428

I'd suggest utilizing the Jagoomba Color emulator to see if it's fixed on that fork of Goomba.

There's also another fork called Super Goomba, but this version doesn't support GBC games.

Also, I'll be setting up a bug reporting form for future reports. So it wouldn't add more clutter to the thread :)
yeah jagoomba color fixed it, thanks and sorry!
 
Through testing I found that the optimization in SCFW 4.3 has broken fat init in the kernel GBA for my SuperCard Lite (MicroSD version not Rumble) and I believe this also means your fork fails fat init after kernal load as well. Any chance you can look into seeing if that's fixable?

I've tested regular SCFW 4.2 and pretty much everything works as expected on my SC Lite even with 4GB MicroSD card.....so the SDHC stuff works too. But for what ever reason the changes in 4.3 break fat init on my unit. :(

(fat init fails regardless of using 2GB or 4GB MicroSD card)

EDIT:

It appears updating the DLDI might be all that's needed. I tested this DLDI:

https://github.com/ArcheyChen/SuperCard-SDHC-DLDI

And it appears to work for my SC Lite just fine so hoping if the repo gets the updated DLDI things will be working again for us SC Lite users. :D
 
Last edited by Apache Thunder,
  • Like
Reactions: zfreeman
Through testing I found that the optimization in SCFW 4.3 has broken fat init in the kernel GBA for my SuperCard Lite (MicroSD version not Rumble) and I believe this also means your fork fails fat init after kernal load as well. Any chance you can look into seeing if that's fixable?

I've tested regular SCFW 4.2 and pretty much everything works as expected on my SC Lite even with 4GB MicroSD card.....so the SDHC stuff works too. But for what ever reason the changes in 4.3 break fat init on my unit. :(

(fat init fails regardless of using 2GB or 4GB MicroSD card)

EDIT:

It appears updating the DLDI might be all that's needed. I tested this DLDI:

https://github.com/ArcheyChen/SuperCard-SDHC-DLDI

And it appears to work for my SC Lite just fine so hoping if the repo gets the updated DLDI things will be working again for us SC Lite users. :D

That's odd... I haven't changed any other functionality apart from adding support for more filetypes. Updating the DLDI isn't on my to do list at the moment, but I'll keep it in mind.

My focus right now is to implement PocketNES.
 
  • Like
Reactions: zfreeman
UPDATE (as of 2024/06/15)

Kernel revision scfw-0.5.2-pocketN-2024-06-15v0009 is OUT!

Features:

  • PocketNES support
    ✅
    • Loads NES / Famicom games (*.nes)
    • Automatic ROM region detection (PAL / NTSC timing)
  • Goomba support
    ✅
    • Loads Game Boy games (*.gb)
    • Loads Game Boy Color games (*.gbc)
Updated binaries are in the OP. 😁

Notes:
  • The last version of PocketNES, that was developed by both loopy and FluBBa, is v9.98
  • The bundled PocketNES binary cannot properly quit to main menu.
    • Workaround: If soft reset is enabled in the kernel settings, simply hit the key combination:
      • START + SELECT + A + B ~ altogether
 
Last edited by OmDRetro,
UPDATE (as of 2024/06/15)

Kernel revision scfw-0.5.2-pocketN-2024-06-15v0009 is OUT!

Features:

  • PocketNES support
    ✅
    • Loads NES / Famicom games (*.nes)
    • Automatic ROM region detection (PAL / NTSC timing)
  • Goomba support
    ✅
    • Loads Game Boy games (*.gb)
    • Loads Game Boy Color games (*.gbc)
Updated binaries are in the OP. 😁

Notes:
  • The last version of PocketNES, that was developed by both loopy and FluBBa, is v9.98
  • The bundled PocketNES binary cannot properly quit to main menu.
    • Workaround: If soft reset is enabled in the kernel settings, simply hit the key combination:
      • START + SELECT + L + R + A + B ~ altogether
Awesome! Any plans to implement MasterSystem emulator too?
 
Awesome! Any plans to implement MasterSystem emulator too?

Yup, it's actually in the list of planned features in the OP. Right now I'm leaning towards SMSAdvance for implementing Sega Master System / Game Gear / SG-1000 support simply because the source is available for anyone to look at and improve upon thus having more potential. While DrSMS is more accurate, it's not likely to be updated anymore as it is closed source( bummer... Since it has more features too ).

The goal right now is to implement a full alternative to the stock firmware so you're gonna have to wait until I figure this out and push the changes to github afterwards.
 
Yup, it's actually in the list of planned features in the OP. Right now I'm leaning towards SMSAdvance for implementing Sega Master System / Game Gear / SG-1000 support simply because the source is available for anyone to look at and improve upon thus having more potential. While DrSMS is more accurate, it's not likely to be updated anymore as it is closed source( bummer... Since it has more features too ).

The goal right now is to implement a full alternative to the stock firmware so you're gonna have to wait until I figure this out and push the changes to github afterwards.
Great! Can't wait!
 
...

Post automatically merged:


UPDATE (as of 2024/06/20)

Kernel revision scfw-0.5.2-SMSAdv-2024-06-20v0001 is up. Sources uploaded to Github now :D

Features:

  • SMSAdvance support
    ✅
    • Loads Sega Master System games (*.sms)
    • Loads Game Gear games (*.gg)
    • Loads Sega Game 1000 / Sega 1000 games (*.sg)
    • Automatic ROM region detection (PAL / NTSC timing)
    • Custom SMS/GG BIOS loading is NOT SUPPORTED ❌
  • PocketNES support
    ✅
    • Loads NES / Famicom games (*.nes)
    • Automatic ROM region detection (PAL / NTSC timing)
  • Goomba support
    ✅
    • Loads Game Boy games (*.gb)
    • Loads Game Boy Color games (*.gbc)
Updated binaries are in the OP.

Relevant Notes:
  • The bundled PocketNES & SMSAdvance binary cannot properly quit to main menu.
    • Workaround: If soft reset is enabled in the kernel settings, simply hit the key combination:
      • START + SELECT + A + B ~ altogether
 
Last edited by OmDRetro,
Jeez, I look away for a brief moment and the amount of supported emulators skyrockets! Very excited for Neo Geo Pocket.
How involved is the process of adding support for them? Feels like you blitzed through them all.
 
Jeez, I look away for a brief moment and the amount of supported emulators skyrockets! Very excited for Neo Geo Pocket.
How involved is the process of adding support for them? Feels like you blitzed through them all.

It actually depends on how fast I understand the way the headers work for each emulator and Patter's compilation builder's helped A LOT so I understood it faster. As for the blitzing through the emu's, I just really like a multi-faceted SuperCard SD kernel and the fact that not everyone can afford an EZ Flash Omega DE(Even though I have one 😅) or an Everdrive X5 Mini.
 
  • Like
Reactions: Takafumi
It actually depends on how fast I understand the way the headers work for each emulator and Patter's compilation builder's helped A LOT so I understood it faster. As for the blitzing through the emu's, I just really like a multi-faceted SuperCard SD kernel and the fact that not everyone can afford an EZ Flash Omega DE(Even though I have one 😅) or an Everdrive X5 Mini.

Aah, I see. As much as I'd like to support them, I was never in a position to spend the asking price of the big GBA flash carts, so all this work is much appreciated.
Your and metroid maniac's efforts inspired me to pick up a SuperCard and make some homebrew, which I'd never done before. It's fun to see demos running on real hardware.
 
  • Like
Reactions: OmDRetro
Aah, I see. As much as I'd like to support them, I was never in a position to spend the asking price of the big GBA flash carts, so all this work is much appreciated.
Your and metroid maniac's efforts inspired me to pick up a SuperCard and make some homebrew, which I'd never done before. It's fun to see demos running on real hardware.

Glad we both made a positive impact on you. :D

There's actually a surprise for everyone in the next build.


It's one of the MOST clunky things to work on, but both @metroid maniac and I worked to get this new feature to work.


Through testing I found that the optimization in SCFW 4.3 has broken fat init in the kernel GBA for my SuperCard Lite (MicroSD version not Rumble) and I believe this also means your fork fails fat init after kernal load as well. Any chance you can look into seeing if that's fixable?

I've tested regular SCFW 4.2 and pretty much everything works as expected on my SC Lite even with 4GB MicroSD card.....so the SDHC stuff works too. But for what ever reason the changes in 4.3 break fat init on my unit. :(

(fat init fails regardless of using 2GB or 4GB MicroSD card)

EDIT:

It appears updating the DLDI might be all that's needed. I tested this DLDI:

https://github.com/ArcheyChen/SuperCard-SDHC-DLDI

And it appears to work for my SC Lite just fine so hoping if the repo gets the updated DLDI things will be working again for us SC Lite users. :D

@Apache Thunder: I'll PM/notify you once I have pushed the next build into our Github repo.

Disclaimer: I never tried dabbling with DLDI so you're gonna have to give me some pointers :rofl2:
 
Yeah apparently since that DLDI is DS focused it will need some adjustments before you can port it over back to GBA. Since i can't get any of the SCFW projects to compile on my setup there's not much I can help with. But I will happily test any builds you send my way. ;)

I have a couple DS consoles, several DS flashcarts and the SC Lite's recovery NDS program so not worried about bricking it at all. :D

(although for now I can test it as the kernal file since the latest "firmware" binary still has working DLDI access. It's just the kernal side that I can't use the latest builds for right now)
 
  • Like
Reactions: zfreeman
UPDATE (as of 2024/06/28)

Kernel revision scfw-0.5.2-HVCA-2024-06-28v0002 is up.


  • Added HVCA support (Home Video Computer Advance) ✅
    • The hvca.gba file bundled in is a custom version done by metroid-maniac.
    • HVCA also acts as an NSF player
    • Loads Famicom Disk System games (*.fds)
    • Loads Nintendo Sound Files (*.nsf)

IMPORTANT: HVCA requires an FDS BIOS in order for FDS games to work. Obtain an FDS BIOS and rename it to "disksys.rom" without quotes and place it within X:\scfw\hvca

NOTE: If your FDS ROMs load up until the legal text prompt and starts boot-looping, simply power cycle your gameboy and reload the game.
 
Last edited by OmDRetro,
UPDATE (as of 2024/06/28)

Kernel revision scfw-0.5.2-HVCA-2024-06-28v0002 is up.


  • Added HVCA support (Home Video Computer Advance) ✅
    • The hvca.gba file bundled in is a custom version done by metroid-maniac.
    • HVCA also acts as an NSF player
    • Loads Famicom Disk System games (*.fds)
    • Loads Nintendo Sound Files (*.nsf)

IMPORTANT: HVCA requires an FDS BIOS in order for FDS games to work. Obtain an FDS BIOS and rename it to "disksys.rom" without quotes and place it within X:\scfw\hvca
Love your work. Would it be possible to make a Genesis emulator too?
 

Site & Scene News

Popular threads in this forum