(WIP) David Haywood's Homepage - 模擬器

Jacob avatar
By Jacob
at 2013-08-15T11:08

Table of Contents

2013.08.15

"Road of the Hidden Bits"

One technique Seibu liked to use is encoding additional data with their
tile graphics in otherwise ‘unused’ planes, I encountered this before
when fixing the emulation Dynamite Duke where Seibu stored the priority
data in an extra plane of the tile graphics (I do wonder if the Alpha
in SPI might be done in a similar way, although it would be obvious if
the maths didn’t add up so unless there has been a massive oversight I
admit it’s a little unlikely)

Another technique Seibu liked to use is massive ROM based tilemaps. This
technique obviously has limitations (you can’t change the tiles, so you
can’t animate anything, but mean you don’t need any RAM or CPU power
beyond writing scroll registers to display huge scrolling backgrounds)
Actually Air Raid / Cross Shooter uses this technique along with custom
ROM modules on the PCB which end up acting more like background generators
containing both the graphics and tilemap definitions with no CPU access
other than providing co-ordiates of the background map to draw (hence
why that one isn’t emulated yet, we have no good technique for extracting
the data in a non-hacky way)

This post isn’t about Air Raid tho (Kale did make some recent
improvements to that, but without the graphics being dumped it’s never
going to be interesting) instead it’s about another Taito / Seibu
collaboration, this time the early Video Pinball title ‘Panic Road’

Panic Road employs both the techniques mentioned above, there is a single
extra bit of priority data in the tile planes representing the priority of
tiles vs. sprites, and the tilemaps are stored entirely in ROM.

What is unique about Panic Road compared to other Seibu devleopments is
that there are 2 more bits of ‘invisible’ data in the tile planes, these
are responsible for collisions and until now haven’t been understood
properly.

I took another stab at this yesterday, and this time managed to come up
with some good results. First of all I identified the priority bit (it
hadn’t already been identified) and implemented that, leaving me with
just the 2 bits of priority.

The collision readback window on the hardware was a 0×4000 byte region,
assuming that both collision bits can be read back then 2 bits of data
with a size of 256×256 occupy exactly 0×4000 bytes. The full area of t
he screen is approximately 256×256 (the edges are cut off for actual
display) so that was my starting point. Turns out that this was a good
theory, and the area is kind of a readback of the invisible (collision)
bits of screen data although the way it interacts with the scroll register
is a little strange, eventually I managed to figure it out tho.

As a result the game now appears to be playable. If anything the
sprite-sprite collisions are letting it down, but those are handled
entirely by the game software, so I have to assume them to be correct
unless I can find a reference video of the game being played properly
to prove me wrong. Actually a good reference video would be handy anyway
because sprite-sprite priorities are almost certainly wrong right now.
As a game it doesn’t seem to hold up very well compared to later video
pinball games, the physics are horrible and the entire game seems to
really revolve around you using the 100 ‘shakes’ you get per level to
get the ball to go where you really want it rather than any kind of
precise aiming skill. It’s no Pinball Dreams for sure!

http://mamedev.emulab.it/haze/pics2013/panicroad_1.png
http://mamedev.emulab.it/haze/pics2013/panicroad_2.png
http://mamedev.emulab.it/haze/pics2013/panicroad_3.png
http://mamedev.emulab.it/haze/pics2013/panicroad_4.png

The collision data is quite interesting, one bit of the data represents
solid objects, things the ball should not pass through, the second bit
represents areas where the flippers can take effect, I’m not entirely
sure why this was necessary but if you return blank data for those bits
in the readback the flippers simply don’t work.

I’ve used the MAME tilemap viewer to show some side-by-side shots of
the level graphic data, and the collision data below, there is no
separate shot for priority data as I’d already fully integrated it as
hidden data in the regular level graphics by the time these shots were
made. It should hopefully give a clear representation of the collision
types, you can clearly see where the flippers go from the different
colours collision map! This visual representation was very useful for
working out the meaning of the bits.

http://mamedev.emulab.it/haze/pics2013/panicr_bg0.png
http://mamedev.emulab.it/haze/pics2013/panicr_col0.png

and another level

http://mamedev.emulab.it/haze/pics2013/panicr_bg1.png
http://mamedev.emulab.it/haze/pics2013/panicr_col1.png

I’ve also put together 2 videos, both are playbacks of the same MAME
inp recording, one displays the regular backgrounds, the other displays
the collision map data instead.

http://www.youtube.com/watch?v=gWK0bk6hzoo&feature=player_embedded
(Regular video)

http://www.youtube.com/watch?v=X7n5i5QKN24&feature=player_embedded
(Collision map video)

Nothing especially complex here, it just required somebody willing to
experiment a bit and a fresh pair of eyes, I dare say anybody could have
actually fixed this.

As mentioned, a few things could do with verifying on the original
hardware (I especially wonder what the conditions are for falling down
the killer black holes in the middle of the playfield, although that
could be another sprite priority issue, or depend on the speed the ball
is moving)
______________________________________________________________________________

來源:http://mamedev.emulab.it/haze/2013/08/14/road-of-the-hidden-bits/

--

ポーラステーション
http://perryt0517.wordpress.com/

--

All Comments

(PS)Final Fantasy Tactics [ePSXe1.70]

Oscar avatar
By Oscar
at 2013-08-14T23:49
最近想重玩Final Fantasy Tactics(太空戰士戰略版) 由於想先重新體驗一次全遊戲,覺得開金手指會比較快XDD 但不知為何網路上分享的金手指全都無法生效!! 目前大概只有Gills(錢)可以無限... 好不容易找到最需要的「角色HP/MP不減」,卻無法用... 找了一個下午還是都找到 ...

Android系統OTG外接搖桿

Daph Bay avatar
By Daph Bay
at 2013-08-14T22:36
由於最近開始花比較多時間在android設備上面玩模擬器 花了點時間爬關於搖桿的資料 比較多的答案是使用無線搖桿(藍牙 or OTG接收器) 或是OTG低耗電的小搖桿來達成目的 USB OTG簡介: http://zh.wikipedia.org/wiki/USB_On-The-Go 因為窮學生沒閒錢再買 ...

(Xbox media-player) XBMC4XBOX v3.3.1

Gary avatar
By Gary
at 2013-08-14T22:00
2013.08.14 XBMC is a free and open source media player software made solely for the first-generation Xbox video-game console. Other than the a ...

聖劍傳說3-序-莉絲篇

Queena avatar
By Queena
at 2013-08-14T21:07
稍微要討論一下各職業的利弊問題,所以只好還是分篇。 但這樣篇幅又怪怪的,所以追加該角色的序章攻略內容,會這樣寫6篇。 然後才是開始寫遊戲攻略的部分。 那至於一些基礎操作與設定部分,就等第7篇的主線開始寫才說明, 畢竟序章的部分,戰鬥都不會很難或很吃緊(アンジェラ例外,但這也是未必需要啦) 第一篇當然還是從人氣 ...

PC魂斗羅復刻版

David avatar
By David
at 2013-08-14T18:19
: 解決方法為按F1進入除錯模式,選CLOCK,確定一次目前時間即可。 : WSAD:1P的方向 : J:射擊。 : K:跳躍。 : U:選擇。 : Enter:開始。 : Space:投幣。 : 我只破過一輪,完全一樣,有多新武器H,有四人可選 : ...