11-15-2015, 06:08 PM
I'd like to ask for some feedback on the GPU viewer tools available in BizHawk.
First, since there's little uniformity between the platforms, let's review the GPU debuggers available in bizhawk right now and see what we've got:
NES (neshawk) - Conservative refinement of FCEUX approach, everything jammed into two windows (but with more info than FCEUX)
GB - Principles based on NESHawk approach, but organized better in one window.
SMS - Was the first one we did probably, headed down a NES/GB road but not as elaborated yet.
Genesis - About the same as SMS, but with the higher resolutions and VRAM sizes involved, the window is getting unworkably large and there's no provision for displaying sprites yet.
PCE - About the same as Genesis, but broken into two windows.
BSNES (compatibility core) - A mindbending one-screenful of super-powerful madness, I think there's nothing it can't do (there are actually several things it can't do). This was my effort to apply nocash's principles, but has several substantial elaborations. There's a lot of information here which should be useless unless youre debugging a game. Does it annoy you to see it while ripping art?
GBA - A novel (for our purposes) approach where you build a workbench of the viewers you want. I kind of like it. But at the present there are limitations in information other-than-visual that can be presented. The Sprites view for instance isn't displaying anything other than the art, and it isn't completely clear how this could change, although there's probably a way.
So, we find there are three main approaches here. One is obviously the GBA approach with the multiple windows, and hearing feedback about this is one of the main things I'm interested in. Another approach is to split the tools into multiple windows to keep them manageable. A final approach is to jam everything into one window (best exemplified by the BSNES core)
In general we find there is no provision for scaling views, which would be nice, but we have above average clipboard support so if youre experienced you can zoom in yourself with a paint program pretty fast. With the GBA approach deployed more widespread, scaling would be more workable--theres little reason we couldnt make each of those windows scale, although there would be trouble if we extend the concept to include details such as sprite params as described earlier.
Additionally, that entire GBA approach is more modular which might help unify the GPU debuggers across platforms. Indeed in the long run for BizHawk I see a debugging workbench containing multiple windows besides just GPU views, so perhaps this is inevitable. But my philosophy is kind of to preserve the flexibility hardcode everything for specific purposes instead of forcing everything through a less finetuned general solution. In principle, one could make the All-In-One one of the views you can spawn onto the workbench, though.
But the GBA approach encourages you to have a sloppy workbench with a lot of windows open which will slow down emulation quite a bit. Our tile decoding and rendering code for the tools tends to be on the fluffy and slow side. The SNES one-view approach forces you to keep it clean with one view open. Of course the approach which renders all the views on one screen is pretty slow too.
Keep in mind there are a lot of low spec systems out there and we try to keep windows small for those things.
So, my questions for you all: do you have any strong preferences among the approaches used in BizHawk right now, or any bad experiences with those tools? Are there any other emulators whose GPU viewers can be inspirational models? Which emulators have you had your greatest experiences in?
First, since there's little uniformity between the platforms, let's review the GPU debuggers available in bizhawk right now and see what we've got:
NES (neshawk) - Conservative refinement of FCEUX approach, everything jammed into two windows (but with more info than FCEUX)
GB - Principles based on NESHawk approach, but organized better in one window.
SMS - Was the first one we did probably, headed down a NES/GB road but not as elaborated yet.
Genesis - About the same as SMS, but with the higher resolutions and VRAM sizes involved, the window is getting unworkably large and there's no provision for displaying sprites yet.
PCE - About the same as Genesis, but broken into two windows.
BSNES (compatibility core) - A mindbending one-screenful of super-powerful madness, I think there's nothing it can't do (there are actually several things it can't do). This was my effort to apply nocash's principles, but has several substantial elaborations. There's a lot of information here which should be useless unless youre debugging a game. Does it annoy you to see it while ripping art?
GBA - A novel (for our purposes) approach where you build a workbench of the viewers you want. I kind of like it. But at the present there are limitations in information other-than-visual that can be presented. The Sprites view for instance isn't displaying anything other than the art, and it isn't completely clear how this could change, although there's probably a way.
So, we find there are three main approaches here. One is obviously the GBA approach with the multiple windows, and hearing feedback about this is one of the main things I'm interested in. Another approach is to split the tools into multiple windows to keep them manageable. A final approach is to jam everything into one window (best exemplified by the BSNES core)
In general we find there is no provision for scaling views, which would be nice, but we have above average clipboard support so if youre experienced you can zoom in yourself with a paint program pretty fast. With the GBA approach deployed more widespread, scaling would be more workable--theres little reason we couldnt make each of those windows scale, although there would be trouble if we extend the concept to include details such as sprite params as described earlier.
Additionally, that entire GBA approach is more modular which might help unify the GPU debuggers across platforms. Indeed in the long run for BizHawk I see a debugging workbench containing multiple windows besides just GPU views, so perhaps this is inevitable. But my philosophy is kind of to preserve the flexibility hardcode everything for specific purposes instead of forcing everything through a less finetuned general solution. In principle, one could make the All-In-One one of the views you can spawn onto the workbench, though.
But the GBA approach encourages you to have a sloppy workbench with a lot of windows open which will slow down emulation quite a bit. Our tile decoding and rendering code for the tools tends to be on the fluffy and slow side. The SNES one-view approach forces you to keep it clean with one view open. Of course the approach which renders all the views on one screen is pretty slow too.
Keep in mind there are a lot of low spec systems out there and we try to keep windows small for those things.
So, my questions for you all: do you have any strong preferences among the approaches used in BizHawk right now, or any bad experiences with those tools? Are there any other emulators whose GPU viewers can be inspirational models? Which emulators have you had your greatest experiences in?