divyang4481 / bizhawk

Automatically exported from code.google.com/p/bizhawk
0 stars 0 forks source link

(SNES) Disable H-DMA emulation #267

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Just a simple thing, a option to disable the (SNES) H-DMA (HDMA) Layer, like 
the background layers.

Reason for that is, if TASing a game, H-DMA can make your viewfield smaller, in 
wich it can be annoying.

Original issue reported on code.google.com by N3ui....@gmail.com on 19 Sep 2014 at 12:34

GoogleCodeExporter commented 9 years ago
Can you give a game as an example that uses this?

Original comment by hegyak on 20 Sep 2014 at 1:04

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
I suppose you mean the '0' layer toggle hotkey in snes9x.  HDMA isn't a layer. 
The snes9x docs dont call it a layer, they say that it disables HDMA emulation. 
It can't safely be toggled off. it will affect the game's operations and break 
your TAS. In fact in snes9x-rr, you can't disable this while the game is 
running.

bizhawk is not likely to support a feature like this anytime in the forseeable 
future, since it is not easy at this point in time to block operations like 
that while TASing, and I'm not even sure I want people breaking games that way 
even while _not_ tasing. Imagine they break the game and then think theyve 
found an emulation bug? We'll never sort it out. 

But I'll leave it open as a reminder that someone wanted it and a user might 
find it helpful. I have found it helpful myself on occasion in olden times in 
snes9x.

Original comment by zero...@zeromus.org on 20 Sep 2014 at 3:33

GoogleCodeExporter commented 9 years ago

Original comment by zero...@zeromus.org on 20 Sep 2014 at 3:34

GoogleCodeExporter commented 9 years ago
hegyak: Well, the hack "COLORS" (Super Mario World Hack) on level 2 uses a 
H-DMA to only make a small area visible, wich is also constant moving, wich 
hardens playing.

zero: (I actually didn't know snes9x has it)
Well i though, it like an layer for the emulator. But i haven't looked deeply 
into it.
(A way, i thought could be possible, were the core/emulator does the timing 
etc. but does not draw/write it onscreen)

Original comment by N3ui....@gmail.com on 20 Sep 2014 at 1:56

GoogleCodeExporter commented 9 years ago
It isn't a layer. 

It isn't possible. Good thinking, but since it isnt a layer, it's nothing we 
can skip drawing. HDMA works by setting up an automated process to periodically 
change hardware registers. those hardware registers are in this case I assume 
turning the BG off and on. Since the game can theoretically read back these 
registers, interfering with that would scramble the game.

all that can be done in your case would be a new emulator hack called basically 
"prohibit game from hiding BG" or maybe "force BG visible"

Original comment by zero...@zeromus.org on 21 Sep 2014 at 1:14