Handheld Underground

hhugboy v1.0 released!

posted by taizou @ 2013-02-19 00:08:46 hhugboy
hhugboy screenshot

well hey, I made an emulator! an emulator by the name of hhugboy, which is very very heavily based on GEST. because the world definitely needed another gameboy emulator. I have zero experience of emulator coding and I've done a little bit of C++ before (which 99% of emulators are written in) but I don't get along with the language one bit, so it's been kind of... a learning experience for me, to say the least, but I've finally got something I'm fairly happy with.

the major thing with this emulator is it supports Sintax and Li Cheng mappers on unmodified copies of their roms (ie the "raw dump" versions I've posted previously). I've been hacking these games to make them work on standard emulators, but this has proved a little difficult with a few games, which got me thinking - why not try and emulate their mappers instead? and so.. I did. Those two, anyway. Li Cheng's was easy, Sintax's was a bit more work and isn't 100% perfect (new dumps may or may not run, but most should). Also, for any other emu authors or other interested parties, I'm going to document those two as much as I can at some point soon.

This does raise the problem of how to detect which games use which mappers - I've kind of tried to fudge it based on the boot logo but that isn't 100% reliable so I've put in a manual override in the menu too. It'd be nice if the Game Boy had a ROM file format like the NES's (iNES and UNIF) containing cartridge info independent of the internal GB ROM header (which was set by the developers and often wrong for unlicensed games) avoiding the need for either hacks, dubious autodetection attempts or manual overrides to determine which mapper to use. I don't know if there's enough interest for something like this to take off, given that it's only necessary for unlicensed games (and Mani's multicarts) though.

Anyway I've made a bunch of other improvements and tweaks to the original GEST, including screenshots, a recent ROM list, sharper filtering at larger sizes, Unicode filename support (which I haven't seen in any other emu, so have fun naming your roms in whatever language takes your fancy), a nicer/somehow appropriate onscreen font (from codeman38), and more!

Latest downloads, source code and issue tracker can all be found on bitbucket, so..go there! and try it. and if you find any bugs add them to the tracker.

(also I realise there aren't any Li Cheng roms out there to play on this thing but I'm planning to fix that in the near future too)

16 Comments

Comments

1posted by ? @ 2013-02-21 10:00:38

first off, congrats for this new emu! it's very nice to have the pirate mappers documented.

concerning ROM header, please god no! iNES format is really a kick in the guts of emulation accuracy and it only works if the dumpers sets the correct header, which for half of the NES pirate dumps has never happened (a lot of them just got labeled as MMC3 even if they were not, so that they only worked in specific emulators which recognized them by crc modifying MMC3 emulation accordingly). so unless you manage to centralize dumping efforts, emu authors just have to hope that dumpers set the correct mapper in the header...

autodetection or a game database is the only correct way to handle this, I fear.

anyway, back to the syntax games, I had spent a lot of time in the past month trying to understand how the protection worked (to support them accurately in MESS) and your emulator shred full light on that. Can I use your findings about the 0x0000-0x2000 writes (of course with full credits to you)?

2posted by taizou @ 2013-02-21 14:57:02

> first off, congrats for this new emu! it's very nice to have the pirate mappers documented.

thanks!

> concerning ROM header, please god no!

Yeah, I mean, I'm not saying it's a perfect solution (and I'm certainly not saying it should be modelled on iNES), it just seems to me like the best way of doing things out of a bunch of imperfect solutions.

I don't think autodetection could ever work 100% on the Game Boy, because it relies on all these unlicensed developers and cart manufacturers being consistent, which they never ever were. For example Li Cheng released their own versions of some Sintax games like Space Baby and Lord of the Rings, hacked to work on their own mapper, but they still have Sintax's boot logo (and they even still do the Sintax-specific writes on boot, they just have no effect) so my emu detects them as Sintax games and they don't work. They also released a bunch of Chinese translations which all have their own protection hacked in but otherwise are just regular old licensed games translated to Chinese (and don't have any special logo whatsoever). I'm not sure how you'd go about detecting any of these correctly without the prior knowledge that it was a Li Cheng cart.

The problem is a raw GB dump is really an incomplete record of what the cartridge was - sure you have all the data but you have no way of telling for sure which mapper it used (or even the true ROM/RAM size for that matter, which is usually wrong in unlicensed games too), so I think there's a definite need to store that info *somewhere*, whether that's on the emu side or the ROM side. Personally I'd rather keep it with the ROM. Relying on a game DB means it would always need to be updated to support each new dump, even if it was on a known and well-supported mapper; it'd surely cause problems for romhackers too. It's also down to each emu author to maintain the DB, and while a project like MESS can keep on top of it, what about some random emu for a mobile/console platform that supports the mappers perfectly well but is never updated?

Yeah things can get out there with incorrectly set headers, but that's always fixable later along the line - if I came across a ROM in this hypothetical format with the wrong mapper set, and I wanted to emulate it, I'd rather just put out a fixed version of the ROM and ignore the wrong one as a "bad dump" instead of adding some CRC-based hack to my emu to support it. If a dumper dumps something but they have no idea what to do, it could just be flagged as "unknown mapper" and then the emu can show a warning but fall back to whatever generic mapper it deems appropriate, like MBC5.

> Can I use your findings about the 0x0000-0x2000 writes (of course with full credits to you)?

Yep, absolutely, I'd like to see this stuff supported as widely as possible :D

3posted by etabeta @ 2013-02-23 14:55:19

thanks a lot for the permission to use your findings. I have added emulation of Sintax mapper to MESS, as you can see from the following snaps

http://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=86029#Post86029

I will also send you a PM on PGC boards soon because I have a few questions for you...

7posted by Chowdit1 @ 2013-09-23 01:35:23

Is there going to be later newer releases of this emulator?

8posted by KAGE-008 @ 2013-12-18 03:07:12

@Chowdit1 -- no idea

9posted by Chowdit1 @ 2014-01-03 22:46:34

It won't work at all. The program keeps having an error saying "Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access this item.", when I open it. I've unzipped it, downloaded the both necessary .zip files, even putting GEST in the same folder. Nothing's working. It's like the application is corrupted. D: Please help me!

11posted by Chowdit1 @ 2014-10-19 04:19:05

@Chowdit1
I wish I could delete that comment, now. Because that situation is way-past dealed with. :_

12posted by Chowdit1 @ 2014-10-19 04:19:52

Oops, I meant to actually put "@Taizou". :_

13posted by Chowdit1 @ 2014-10-19 05:32:47

@Taizou
By the way, I do somewhat strongly suggest to make a new version of this emulator, with a Sachen mapper for their games, and a Sachen mapper for their multicarts, to troubleshoot broken multicart version games. Maybe as an extra, yet another I was going to wait later to tell, is that I have an unbelievable tale, one night, a while back, I was playing Rockman 8 on the HHUGBOY, instead of GEST. It turns out like, when I had it set on "Auto" (compatibility) (usually I always tend to set it manually, not thinking), it worked completely the opposite than it would. No more of that FUCKING glitch rule in the game! I'm not kidding. I'm seriously telling the truth, 100%. Of course, it wasn't perfect, you kinda manage around with it. But it was better than it was! :D The only EXTREMELY SAD thing is, it was only a FUCKING ONE TIME CHANCE. FUCK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
So yeah, even though I've played it enough, to where it's too easy for me (Rockman 8, I mean), it would be nice if you could make a mapper option for broken Makon Soft games, whether if the ROM is broken, or if the game's programming is broken. (The only Makon Soft game that seems to broken, by programming, not just being a bad dump, is just Rockman 8, probably also Rockman X4, maybe.) But I would suggest to wait till both when you dump the Volume 2 8-in-1 multicart, and until you dump Rockman X4.

14posted by Chowdit1 @ 2014-10-19 06:04:37

@Taizou
By the way, I wanted to ask if you wanted this emulator shared on other websites, for everyone to find easier, like "The Emulator Zone" or "Zophar's Domain", but I don't know what I could do about that with having it on there. :_ Just wondering if you want other websites to share the download, or not.

15posted by Chowdit1 @ 2014-10-19 06:06:50

@Taizou
Can you try to remake REW for Windows 7? Do something how the window cuts off part of the screen/display.

16posted by Chowdit1 @ 2014-10-19 06:13:28

@Taizou
Actually, people already have. Obscure ones, but yes. For some reason, they named it (case sensitive) "HhugBoy Git". O_o What the hell does "Git" mean? O_o

17posted by taizou @ 2014-10-21 01:56:25

git is the name of the version control system I use, that just means they've compiled the latest version from the latest code updates I made - really the only changes I've made since the release were just reorganising some of the code to make it easier to use something other than DirectDraw for rendering purposes but I never got around to actually doing that, so the git versions don't really have any substantive changes and may even have bugs that aren't present in the release version.

but yeah people are welcome to rehost the emulator anywhere they like, the source code is released under GPL anyway so people are free to make modifications and redistribute it etc as long as te source code is provided.

as for everything else, i have no interest in "remaking" REW, and the Rockman 8 bugs are nothing to do with the emulator (it tries to emulate real hardware and its broken on real hardware) .. and the Sachen mapper maybe is something I would do if I ever actually understand how Sachen's mapper works but don't hold your breath

18posted by Chowdit1 @ 2014-10-24 03:50:37

@Taizou
Well, I'm telling you the truth though, it was just a really extreme lucky glitch with the emulator. But yes, I see what you're saying. :o Also, by the way, I didn't know this until recently, but I noticed that REW has NES ROM capability. :o However, I noticed it seems like it works like VirtuaNES, but just worse. :( Just an interesting fact. I honestly thought it was a GameBoy emulator, only. :o

19posted by taizou @ 2014-11-21 02:57:21

yeah i think it can play PC Engine games as well.

20posted by leeseongjae620 @ 2015-09-15 05:51:07

HHUGBOY