PDA

View Full Version : MasterBoy 2.01 -Gameboy, Master System and Game Gear Emulator for the PSP



gelon
August 27th, 2007, 09:29
Brunni (http://brunni.dev-fr.org/index.php?page=home) have release a new version of MasterBoy

* Finished the english documentation on how to colorize your games! *
* This version fixes a bug with sound volume when loading RIN states.
* The file list can now display up to 1024 roms.
* Added a small debug mode for the kernel version (copy the EBOOT from the Kernel mode directory to your MasterBoy directory on the PSP - this version runs significantly slower, so use it only for debugging and colorization). For people who reported me strange problems, press L+R+Triangle in the menu. It will show the available RAM. If you have the problem of save states not working after a while, please tell me how this value evolutes. Also, if this mode is enabled when going to Save states, SRAM, Save now, a message box with some information will appear, if you have the SRAM problem (not saving) please report to me the displayed text.
* Bugfixes

COLORIZATION

* Note: The current method is not the best. The best is to use PSPLink if you can; basically just set-up PSPLink to launch the MasterBoy EBOOT in a local folder (which contains the files necessary for MasterBoy to run).
* For that, extract this RAR file somewhere (avoid spaces in the path name).
* Copy the contents of the PSP folder to your PSP.
* Launch PSPLink on your PSP
* Connect the USB cable and install the drivers located in PC/driver.
* Modify the launch.bat file to replace my example path "../../Projects/OSLib/OSLib/OSTools" with the path of your MasterBoy folder (the path is relative, hence the ../, which mean parent folder)
* Execute launch.bat
* Execute pcterm.exe
* Type ./EBOOT.PBP - MasterBoy should start if all files are in the folder
* Create a romdir.ini file containing the following text: dir=/
* Go to Load ROM, select / and select a ROM in this folder.
* Do exactly as described for the USB method. Now when saving the .pal.ini file to your harddrive, the PSP will directly read it from there, without ever failing. So you just have to press Ctrl+S (save) in notepad and R+Start (load state) on PSP to see the effect of your modification.
* In this case, you don't need the kernel version

Please register (http://www.neoflash.com/forum/index.php?PHPSESSID=11f49761cd1f25a7308731f7e0de7b c1&action=register) and vote (http://www.neoflash.com/forum/index.php?PHPSESSID=11f49761cd1f25a7308731f7e0de7b c1&topic=4600.0) Brunni 4 NEO Summer Compo 2007 (Say THANKS in other words)

Download and Give Feedback Via Comments

Brunni
August 27th, 2007, 11:36
Thanks for the news. If anyone has the problems listed in the news, please post here so we can try to sort this out with the debug mode ;)

SpacemanSpiff
August 27th, 2007, 13:00
Thanks a lot Brunni, do you think the recoloring option could be implemented for any other systems besides Game Boy original? I certainly wouldn't mind playing NES games with a full color pallette...

wolfpack
August 27th, 2007, 17:55
colored gameboy games... very fun.

Brunni
August 27th, 2007, 19:32
Thanks a lot Brunni, do you think the recoloring option could be implemented for any other systems besides Game Boy original? I certainly wouldn't mind playing NES games with a full color pallette...
This would require another approach and isn't evident, as NES graphics are already 2-bit. That is 4 colors (3 on sprites, + 1 transparent).
You could imagine redrawing graphics to 4-bit and adding an extended palette for a better quality but the improvement would not be major as in NES games there is a lot of "empty" or repeated zones due to the limited amount of memory, and they would not be modifiable.
It could be cool to "fill" these zones with your own graphics, but that requires modifying the maps (only possible in the ROM itself), and even in this case you would then be limited by the too restricted number of tiles.
So we are going further: it could be possible to expand the capabilities of the picture processing unit to add more VRAM, more tiles (that probably includes creating an additional attribute map such as the Game Boy Color), but it would require to modify the game ROM a lot to be able to exploit it and that would just be by far too complicated for "normal" people ;)
Anyway the first solution is just not worth being implemented and the second would just be used by nobody :p

Tesseract
August 27th, 2007, 20:28
Ah, I love a coder that pays attention to bug reports in such a prompt and open manner! I will get right to work on this and see what I can dig up for you!

Results:

Fired up the Kernel Mode emulator, made my control adjustments and went right to work. The amount of available memory never flickered once I started the ROM. It started at 16,491k and stayed there through all 21 Save states and 15 Load states. At this point, I decided that I should have had the problem by then and stopped.

I then loaded up the err... non-kernel... I'm gonna call it the 'Production' version, just for ease. Fired up Zelda DX (GBC), got through 7 Saves and 4 Loads before the bug reared its ugly head again. I restarted the emulator and went to Sonic 2 (SMS). 7 Saves and 8 Loads later, same thing.

The two Save State file sizes are slightly different.... Sonic 2 was 7887 bytes per save (total of 55,209 bytes over the 7 saves) and Zelda DX is 7224 bytes per save (50,568 bytes total).

So it appears that the bug is limited to the 'Production' version, and not the Kernel version. If there's any other info you'd like me to dig up, I'll be happy to continue lending my assistance. Until then, I'm just gonna run the Kernel version at 333 MHz. ;)

yoshinatsu
August 28th, 2007, 08:56
Another cool release from Brunni, always happy to see his releases :)
I don't want to be irritating... but you should consider what I wrote you in the email Brunni (I suppose you know who I am ;))
Just ask some opinions. You have nothing to lose by just asking people's opinion about it.
It's not wrong doing something like it. Everyone wants it. Everyone will love it.

And no, you won't be remember as the developer who did it just to do it (and impress, or whatever).
You'll be remember as the developer who made the one and only emulator, through other masterpieces :p
And of course I suppose their original developers will be happy, too :)

Tesseract
August 29th, 2007, 02:20
Bad news, Brunni.... I started getting the error today on the Kernel version, too. It took MANY more Saves and Loads (I stumbled my way through two full dungeons and aimless wandering around the overworld in Zelda DX. Several hours' worth of play.) than the 7 the 'Production' version managed, which is likely why I didn't run into it last night.

The Total RAM used after the bug popped up was no different. Still 16,491k.

Brunni
August 29th, 2007, 21:07
O... kay. That's very bad, I can't tell anything more. Can you give me your MSN addy by PM so that we can try to debug together? :(


Another cool release from Brunni, always happy to see his releases :)
I don't want to be irritating... but you should consider what I wrote you in the email Brunni (I suppose you know who I am ;))
Just ask some opinions. You have nothing to lose by just asking people's opinion about it.
It's not wrong doing something like it. Everyone wants it. Everyone will love it.
I've answered your e-mail. Sorry but my opinion is still the same ;)

Raiser
August 30th, 2007, 04:42
Hey Brunni,

I have a question and possibly suggestion for you regarding the "[Unsolvable] Cases" section of your colorization document.

Since a lot of Game Boy games use a "blank" tile for the sky of a level as well as doors and "empty" space in other background objects, it's impossible to colorize the sky of a level without messing up the other objects.

What if Masterboy were to look at the level's map as well as the tiles currently loaded in the VRAM, and color a certain tile with different palettes depending on which other tiles are next to it?

For example:

I want to color the sky blue in Kirby's Dreamland. Doing so, however, will also color the door of this room blue because they both use tile +133 (as shown in red).

http://img.photobucket.com/albums/v38/Raiser/kirbyproblem.png

I, however, want this tile to be white when it is used as a part of the door. Whenever tile +133 is being used to draw a door, it will always be located beneath tile +227 or tile +228 (outlined in yellow and purple).

http://img.photobucket.com/albums/v38/Raiser/adjacent.png

If it were possible to tell MasterBoy to always color tile +133 blue EXCEPT when otherwise specified, and later specify that tile +133 should be white when it is underneath tile +227 or tile +228, it would allow for both a blue sky and a white door.

If Masterboy could check for which tiles are touching a certain tile from above, below, or its right or left sides, it would greatly improve the colorization features MasterBoy provides.

Would this feature be possible implement in the next version, or would this type of checking slow down MasterBoy's Game Boy emulation too much?

Brunni
August 30th, 2007, 20:55
I've already thought about this, but it's somewhat too complicated (in terms of performance). In fact you would not only need to check the tiles nearby, but if the tiles in the neighbouring are all the same (like in the sky for example) you need to go further and find an "edge" where the tile differs. Also it's not the case here but imagine the screen is scrolling and the door is cut-off to the left of the screen (or right, same) we wouldn't be able to find the next black tile in one direction or the other. :(

usp8riot
August 30th, 2007, 21:05
Wouldn't there be a way around it, such as creating a cache of the game like the CPS2 emulator does, or in this case, a cache of pre-rendered tile differential data or whatever. You ask me, a non-coder, I think going that route would be too much work, let alone think of another way to colorize more. I like my games true to the original so I don't bother with it.

Anyhow, could you please add a function so pressing right or left d-pad scrolls games by the 10's or whatever? You know, for those of us who have lots of 'backups'.

Buddy4point0
August 30th, 2007, 23:38
great work! this is really nice. thanks alot man

Ziim
August 31st, 2007, 18:46
Brunni, Is there a spot were people can upload the color packs to, and download others work? Also, are there any plans for a windows Masterboy? Or is there a windows emulator that can take advantage of the colorization?

Brunni
September 2nd, 2007, 11:30
Anyhow, could you please add a function so pressing right or left d-pad scrolls games by the 10's or whatever? You know, for those of us who have lots of 'backups'.
It's R+up/down.


Brunni, Is there a spot were people can upload the color packs to, and download others work? Also, are there any plans for a windows Masterboy? Or is there a windows emulator that can take advantage of the colorization?
I'll try to integrate it to VisualBoyAdvance if I can, it will be easier for development and allow other people to try colorizations ^^
Also for the place, this is a good question... I could make a place on my web site where we can host them, I'll think about it. If you have completely finished a game, you can send it to me by e-mail ;)

Thanks

osher
September 6th, 2007, 08:35
need some help
i'm in the prosess of coloring wario - supermarioland3
but when i save state and restore the state the color's gone what is the problem?

her's the script:

#Initialization
Init:
#We only rely on those tiles...
ColorIt.addTileCrc 0, 383
#For debugging
ColorIt.autoShowVramCrc = true

#Fall down here to set the default profile upon initialization
[5ad63eb1]:
#Create a gray palette
ColorIt.setPalette 0, rgb(255,255,255), rgb(168,168,168), rgb(88,88,88), rgb(0,0,0)
#By default, we use the standard gray palette for everything
ColorIt.addTileRule 0, 383, 0

ColorIt.setPalette 1, rgb(255,255,255), rgb(128,128,192), rgb(64,64,160), rgb(0,0,128)
ColorIt.addTileRule +18, +19, 1
End

[cfa46e29]:
#Create a gray palette
ColorIt.setPalette 0, rgb(255,255,255), rgb(168,168,168), rgb(88,88,88), rgb(0,0,0)
#By default, we use the standard gray palette for everything
ColorIt.addTileRule 0, 383, 0

ColorIt.setPalette 1, rgb(192,192,224), rgb(128,128,192), rgb(64,64,160), rgb(0,0,128)
ColorIt.setPalette 2, rgb(255,255,0), rgb(128,128,0), rgb(255,255,255), rgb(0,0,0)
ColorIt.setPalette 3, rgb(255,255,255), rgb(255,128,64), rgb(128,64,0), rgb(0,0,0)
ColorIt.setPalette 4, rgb(255,255,255), rgb(255,0,0), rgb(128,64,0), rgb(128,0,0)
ColorIt.addTileRule +128, +131, 1
ColorIt.addTileRule +136, +139, 1
ColorIt.addTileRule +152, +155, 2
ColorIt.addTileRule +35, +36, 4
ColorIt.addTileRule +140, +143, 3
ColorIt.setTilesetData 0, L "03333333 30000000 30333000 33330000 33333300 33222230 32222223 32222323"
ColorIt.setTilesetData 1, L "33333330 03333333 00033303 00003333 00333333 03222233 32222223 32322223"
ColorIt.setTilesetData 2, L "32222323 32222223 33222230 30333300 31111000 30000000 31111111 03333333"
ColorIt.setTilesetData 3, L "32322223 32222223 03222233 00333303 00011113 00001103 11111113 33333330"
ColorIt.SetTile +152, 0
ColorIt.SetTile +153, 1
ColorIt.SetTile +154, 2
ColorIt.SetTile +155, 3
End