<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5785947376493681536</id><updated>2012-08-06T06:54:44.812-07:00</updated><title type='text'>PE+/S+ Emulation via MAME</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default?start-index=26&amp;max-results=25'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-1509329063255974764</id><published>2009-01-08T16:20:00.000-08:00</published><updated>2009-01-08T16:50:22.317-08:00</updated><title type='text'>Wingboard Support</title><content type='html'>&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_bVg1g8504p4/SWaZAwZX0AI/AAAAAAAAALg/0Vq3Z_zQslc/s1600-h/wingboard.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5289083050663596034" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 240px" alt="" src="http://3.bp.blogspot.com/_bVg1g8504p4/SWaZAwZX0AI/AAAAAAAAALg/0Vq3Z_zQslc/s320/wingboard.png" border="0" /&gt;&lt;/a&gt; Its been a while since I did any major updates to the peplus driver, but recently I decided to tackle a hardware add-on for the machine.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The add-on is called a "wingboard" or daughterboard. Its purpose is to attach to a superboard pcb where you would normally place the CMOS RAM and DATA chips.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;By adding this board you are then able to add a special 5-in-1 game support. With the proper PROGRAM chip installed, the machine will read all 5 DATA chips and display a special Multi-Poker menu.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;This board functions similar to the 2 chip (non-wingboard) set XMP00006, but allows the user to swap out different chip sets instead of using the fixed list in the 2 chip set.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_bVg1g8504p4/SWadOShUlBI/AAAAAAAAALw/xJKI5OKil7Q/s1600-h/wingtest1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5289087681208554514" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 201px" alt="" src="http://2.bp.blogspot.com/_bVg1g8504p4/SWadOShUlBI/AAAAAAAAALw/xJKI5OKil7Q/s320/wingtest1.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;The first challenge with making the wingboard work in MAME was discovering how the board functioned. The problem lies with the small PAL chip located on the board that controls the logic of banking to the proper DATA chips. After tracing the board by hand, I figured out a basic schematic and determined that the board switches DATA chips via a CMOS DATA write to the address 0x1FFF. The value written to this address is captured by the PAL chip and used to enable the output of the appropriate DATA chip on the address and data lines.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_bVg1g8504p4/SWadcGSIBaI/AAAAAAAAAMA/zzhAwou2fLM/s1600-h/wingtest3.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5289087918441760162" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 200px" alt="" src="http://1.bp.blogspot.com/_bVg1g8504p4/SWadcGSIBaI/AAAAAAAAAMA/zzhAwou2fLM/s320/wingtest3.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Once I understood how the wingboard worked, I added support to the peplus driver. Basically, I swap the internal superboard DATA region when address 0x1FFF is written.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Now that I had the game mostly working, I found that not all the graphics were painting correctly. This was due to the fact that the graphics chips are twice the size of any of the games I have added in the past. But I had to find what was triggering the machine to switch to the second half of the graphics chips and color proms. After some investigation, I found that there is a jumper on the superboard pcb (E16/E17) that controls the banking. This lead me to find that a bit on PORT3 is used to signal the machine to bank to the second half of the graphics.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_bVg1g8504p4/SWadUb7N35I/AAAAAAAAAL4/esew5aLFErQ/s1600-h/wingtest4.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5289087786812301202" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 201px" alt="" src="http://3.bp.blogspot.com/_bVg1g8504p4/SWadUb7N35I/AAAAAAAAAL4/esew5aLFErQ/s320/wingtest4.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;So after a little more cleanup, all things appear to be working fine.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_bVg1g8504p4/SWadFqmpD0I/AAAAAAAAALo/LTa2lOiZtTA/s1600-h/wingtest7.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5289087533054496578" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 200px" alt="" src="http://4.bp.blogspot.com/_bVg1g8504p4/SWadFqmpD0I/AAAAAAAAALo/LTa2lOiZtTA/s320/wingtest7.png" border="0" /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/1509329063255974764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=1509329063255974764' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/1509329063255974764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/1509329063255974764'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2009/01/wingboard-support.html' title='Wingboard Support'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_bVg1g8504p4/SWaZAwZX0AI/AAAAAAAAALg/0Vq3Z_zQslc/s72-c/wingboard.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-2522214937045566257</id><published>2008-06-11T18:10:00.000-07:00</published><updated>2008-06-11T18:30:02.087-07:00</updated><title type='text'>Lots of Slots</title><content type='html'>&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/SFB7BlejDWI/AAAAAAAAAIA/yqBoYjQyBJ0/s1600-h/PS0716.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_bVg1g8504p4/SFB7BlejDWI/AAAAAAAAAIA/yqBoYjQyBJ0/s320/PS0716.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5210800036037987682" /&gt;&lt;/a&gt;I decided to revisit the PE+ driver specifically to find out why all the video slots did not accepts coins.  I assumed the slots had some special code that maybe affected the coin-in timing, but after a lot of tracing, I couldn't find any differences.  Eventually, I noticed that the last page of the operator screens was blank and the Spin button was lit.  Pressing the Spin button didn't seem to do anything.  Using some experience I learned from the S+ slot machine, I figured this screen was used to show the reel stops.  Each time you press Spin you would see the next reel stop etc.&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/SFB6-iWU0xI/AAAAAAAAAH4/iZX5nvX2N3E/s1600-h/PS0615.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_bVg1g8504p4/SFB6-iWU0xI/AAAAAAAAAH4/iZX5nvX2N3E/s320/PS0615.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5210799983658586898" /&gt;&lt;/a&gt;&lt;br /&gt;But the screen wasn't painting the reels and seemed to be stuck in a loop.  After much tracing, I finally found that the Timer 1 interrupt at 0x001b stopped firing.  Without this interrupt, the game would basically sit in an endless loop waiting for the timer bit to update.&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/SFB67Vh-61I/AAAAAAAAAHw/Gi3sXZhSEWs/s1600-h/PS0308.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_bVg1g8504p4/SFB67Vh-61I/AAAAAAAAAHw/Gi3sXZhSEWs/s320/PS0308.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5210799928678214482" /&gt;&lt;/a&gt;&lt;br /&gt;It turns out that the split timer code in the i8051 core needed a small tweak.  Once the code was fixed, the reel stops showed up in the operator screen, and the game started accepting coins.&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/SFB634FDC4I/AAAAAAAAAHo/h4Ti9_k1ptc/s1600-h/PS0045.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_bVg1g8504p4/SFB634FDC4I/AAAAAAAAAHo/h4Ti9_k1ptc/s320/PS0045.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5210799869232614274" /&gt;&lt;/a&gt;&lt;br /&gt;Now that I could see the slot games play properly, I found that PS0716 was not "Quarter Mania", but rather "River Gambler".&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/SFB6zwYa7oI/AAAAAAAAAHg/RFLCnzSX5HY/s1600-h/PS0043.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_bVg1g8504p4/SFB6zwYa7oI/AAAAAAAAAHg/RFLCnzSX5HY/s320/PS0043.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5210799798446911106" /&gt;&lt;/a&gt;&lt;br /&gt;With the video slots working, I added support for 5 new romsets to the driver:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;(PS0014) Super Joker Slots&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(PS0022) Red White &amp; Blue Slots&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(PS0043) Double Diamond Slots&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(PS0045) Red White &amp; Blue Slots&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(PS0308) Double Jackpot Slots&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/SFB6vgVxHZI/AAAAAAAAAHY/chOcAW6-k0U/s1600-h/PS0022.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_bVg1g8504p4/SFB6vgVxHZI/AAAAAAAAAHY/chOcAW6-k0U/s320/PS0022.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5210799725421338002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/SFB6mGOXymI/AAAAAAAAAHQ/xOykLhhomEc/s1600-h/PS0014.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_bVg1g8504p4/SFB6mGOXymI/AAAAAAAAAHQ/xOykLhhomEc/s320/PS0014.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5210799563792173666" /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/2522214937045566257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=2522214937045566257' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/2522214937045566257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/2522214937045566257'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2008/06/lots-of-slots.html' title='Lots of Slots'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_bVg1g8504p4/SFB7BlejDWI/AAAAAAAAAIA/yqBoYjQyBJ0/s72-c/PS0716.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-4767392133801826900</id><published>2008-01-27T11:32:00.001-08:00</published><updated>2008-01-27T11:56:08.908-08:00</updated><title type='text'>S-Plus Slots</title><content type='html'>&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/R5zcu7_WrlI/AAAAAAAAAHI/cQ56HmKlhbU/s1600-h/st01.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_bVg1g8504p4/R5zcu7_WrlI/AAAAAAAAAHI/cQ56HmKlhbU/s320/st01.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5160241971995258450" /&gt;&lt;/a&gt;I decided to mess around with another IGT machine called the "S-Plus (S+)".  This machine is strictly a mechanical slot machine with no real video.&lt;br /&gt;&lt;br /&gt;The hardware is similar to the PE+ machine but lacks video and contains optics for the reels.&lt;br /&gt;&lt;br /&gt;There is a bunch of 7-segment display for some form of output, and interesting navigation procedures to view various operator values.&lt;br /&gt;&lt;br /&gt;Once I got a skeleton driver working, I started to hookup the inputs and the 7-segment displays.  After much work, I finally got the display to show the first error code.  This is an error 61 or "Bad CMOS RAM".  Sound familiar?  It should, the PE+ generates this error the first time you boot the machine with empty RAM and empty EEPROM data.  When I saw this error code come up, I knew I was on the right track.&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/R5zcrL_WrkI/AAAAAAAAAHA/zvzYsSWksf8/s1600-h/st02.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_bVg1g8504p4/R5zcrL_WrkI/AAAAAAAAAHA/zvzYsSWksf8/s320/st02.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5160241907570748994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The proper procedure to recover from this error is to open the door and press the Self-Test button.  After doing that, the follow error code appears.  This is an error 61-1 which represents "Game Data Reset".  What needs to be done at this point is to close the door and turn the jackpot reset key.&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/R5zcmr_WrjI/AAAAAAAAAG4/9ufAuALH_2w/s1600-h/st03.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_bVg1g8504p4/R5zcmr_WrjI/AAAAAAAAAG4/9ufAuALH_2w/s320/st03.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5160241830261337650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Doing that produces the next error code, 65-3 which is "Game Options &amp; Meters Not in the Most Current Format".  This can be corrected with a Set Chip, or you can just turn the jackpot reset key and have it overwritten.&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/R5zci7_WriI/AAAAAAAAAGw/Pncaa0eTC5g/s1600-h/st04.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_bVg1g8504p4/R5zci7_WriI/AAAAAAAAAGw/Pncaa0eTC5g/s320/st04.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5160241765836828194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/R5zcbr_WrhI/AAAAAAAAAGo/70xjKibqy8U/s1600-h/st05.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_bVg1g8504p4/R5zcbr_WrhI/AAAAAAAAAGo/70xjKibqy8U/s320/st05.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5160241641282776594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I chose to allow the machine to overwrite the values and turned the jackpot reset key.  A new display appears with the "0" flashing as the CMOS data is reloaded. Now the next error code appears, 65-1 or "Bad EEPROM Data".  Once again a error message I've seen on the PE+ machine.  To resolve this you must open the door and press the self-test button.&lt;br /&gt;&lt;br /&gt;Finally, the last screen appears which should be error free, however I get the following code, 41 which says "Reel 1 Tilt".  This means the machine was unable to process the first reel properly.&lt;br /&gt;&lt;br /&gt;So this is where I'm currently at today.  From this screen I can go into all the operator self-test screens and play around with the machine settings and listen to the built-in sounds, but I get held up eventually trying to activate the reels.&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/R5zcW7_WrgI/AAAAAAAAAGg/y2z3ikctVXA/s1600-h/st06.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_bVg1g8504p4/R5zcW7_WrgI/AAAAAAAAAGg/y2z3ikctVXA/s320/st06.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5160241559678397954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Time to investigate the Reel Optics next.  It should be an interesting challenge.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/4767392133801826900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=4767392133801826900' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/4767392133801826900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/4767392133801826900'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2008/01/s-plus-slots.html' title='S-Plus Slots'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_bVg1g8504p4/R5zcu7_WrlI/AAAAAAAAAHI/cQ56HmKlhbU/s72-c/st01.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-7517891890190257283</id><published>2008-01-21T14:46:00.000-08:00</published><updated>2008-01-21T14:57:45.088-08:00</updated><title type='text'>Hack Free</title><content type='html'>&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/R5Ug8OqfKsI/AAAAAAAAAGU/csaG-OatDBg/s1600-h/memory.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_bVg1g8504p4/R5Ug8OqfKsI/AAAAAAAAAGU/csaG-OatDBg/s320/memory.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5158065167323310786" /&gt;&lt;/a&gt;I finally found the bug that was forcing me to add memory hacks to the driver in order for it to bypass the memory tests for each game.&lt;br /&gt;&lt;br /&gt;The I8051 core library was basically firing the timers when they were sometimes not enabled.  What this did was cause the timer interrupts to modify memory while the memory check subroutine was running.  The memory check routine was writing specific values into memory and verifying that they read back the same value that was written.  But with the timers updating memory at the same time, the memory check would not find the values it was expecting and therefore fail.&lt;br /&gt;&lt;br /&gt;The fix should help slightly increase the responsiveness of the game code too.  I believe the I8051 core has other areas to investigate, but this fix is a huge change for the driver.&lt;br /&gt;&lt;br /&gt;With the fix in place, all memory hacks in the driver can be removed.  This means any new clones that are added in the future should drop in nicely without any special memory modifications.&lt;br /&gt;&lt;br /&gt;I will be submitting a new driver update in the near future with all the hacks removed.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/7517891890190257283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=7517891890190257283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/7517891890190257283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/7517891890190257283'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2008/01/hack-free.html' title='Hack Free'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_bVg1g8504p4/R5Ug8OqfKsI/AAAAAAAAAGU/csaG-OatDBg/s72-c/memory.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-92446031594456105</id><published>2008-01-18T14:19:00.000-08:00</published><updated>2008-01-18T14:28:50.339-08:00</updated><title type='text'>Attack of the Clones</title><content type='html'>&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/R5EmNuqfKpI/AAAAAAAAAF8/YiVx_gkqqag/s1600-h/pepp0065.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_bVg1g8504p4/R5EmNuqfKpI/AAAAAAAAAF8/YiVx_gkqqag/s320/pepp0065.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5156945065622317714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Three new games to report on this update.  The first game is Jokers Wild Poker.  It plays much like other draw poker games, but includes a joker in the deck.&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/R5EmSOqfKqI/AAAAAAAAAGE/E51sN5Wkg6o/s1600-h/pepp0250.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_bVg1g8504p4/R5EmSOqfKqI/AAAAAAAAAGE/E51sN5Wkg6o/s320/pepp0250.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5156945142931729058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next is Double Down Stud Poker.  In this game you are dealt four cards and can decide to double your wager on the last card, or just play with your initial bet.  After you bet or pass, the game reveals the last card and pays accordingly.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/R5EmV-qfKrI/AAAAAAAAAGM/qoOW-J6R-lI/s1600-h/pepp0447.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_bVg1g8504p4/R5EmV-qfKrI/AAAAAAAAAGM/qoOW-J6R-lI/s320/pepp0447.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5156945207356238514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally is a payout percentage variation on Standard Draw Poker.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/92446031594456105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=92446031594456105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/92446031594456105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/92446031594456105'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2008/01/attack-of-clones.html' title='Attack of the Clones'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_bVg1g8504p4/R5EmNuqfKpI/AAAAAAAAAF8/YiVx_gkqqag/s72-c/pepp0065.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-176620042420143797</id><published>2008-01-15T10:22:00.000-08:00</published><updated>2008-01-15T10:52:12.429-08:00</updated><title type='text'>Multi-Poker</title><content type='html'>&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/R4z_rOqfKjI/AAAAAAAAAFM/QRge1i6-HS4/s1600-h/mp01.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_bVg1g8504p4/R4z_rOqfKjI/AAAAAAAAAFM/QRge1i6-HS4/s320/mp01.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5155776791568132658" /&gt;&lt;/a&gt;Not a lot of new changes to report.  I added support for a new superboard romset (pexmp006) entitled "Player's Edge Plus (XMP00006) Multi-Poker".&lt;br /&gt;&lt;br /&gt;This romset uncovered a few memory locations in the DUART space that were not accounted for in the code, so I adjusted the driver accordingly.  The changes are mostly for completeness at this point, since the driver does not currently support the DUART functionality (Network Slot Accounting System).&lt;br /&gt;&lt;br /&gt;This particular game is really 5 games in one.  It has a main menu that lets the user choose which of the five games they wish to play.  Once in a specific game they can return to the main menu via the fifth Hold button.&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/R4z_5-qfKkI/AAAAAAAAAFU/8eYNJpdY40M/s1600-h/mp02.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_bVg1g8504p4/R4z_5-qfKkI/AAAAAAAAAFU/8eYNJpdY40M/s320/mp02.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5155777044971203138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This particular game has quite a few new screens in the operator mode.  I have attached a sampling of pictures throughout this post.&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/R40AT-qfKnI/AAAAAAAAAFs/iqudX2x6vgA/s1600-h/mp05.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_bVg1g8504p4/R40AT-qfKnI/AAAAAAAAAFs/iqudX2x6vgA/s320/mp05.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5155777491647801970" /&gt;&lt;/a&gt;&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/R40AX-qfKoI/AAAAAAAAAF0/YlgiZhd_Giw/s1600-h/mp06.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_bVg1g8504p4/R40AX-qfKoI/AAAAAAAAAF0/YlgiZhd_Giw/s320/mp06.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5155777560367278722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/R40APuqfKmI/AAAAAAAAAFk/cSES0oXGpkY/s1600-h/mp04.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_bVg1g8504p4/R40APuqfKmI/AAAAAAAAAFk/cSES0oXGpkY/s320/mp04.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5155777418633357922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/R40AKOqfKlI/AAAAAAAAAFc/Cz8z75s2gm8/s1600-h/mp03.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_bVg1g8504p4/R40AKOqfKlI/AAAAAAAAAFc/Cz8z75s2gm8/s320/mp03.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5155777324144077394" /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/176620042420143797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=176620042420143797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/176620042420143797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/176620042420143797'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2008/01/multi-poker.html' title='Multi-Poker'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_bVg1g8504p4/R4z_rOqfKjI/AAAAAAAAAFM/QRge1i6-HS4/s72-c/mp01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-3097854564656132648</id><published>2008-01-06T10:50:00.001-08:00</published><updated>2008-01-06T11:12:32.645-08:00</updated><title type='text'>Superboard Revisited</title><content type='html'>Recently, I decided to look at a small bug that has been bugging me (no pun intended) with the superboard version of a few games.  The bug appears after you setup a superboard game for the first time via the operator screens and exit MAME.  The next time you load the same game you will get a "CALL ATTENDANT" or similar message.  The sub-message after that will read "CMOS DATA".  Basically, this means that there is data expected in the battery-backed RAM that does not match values found in the EEPROM.  This functionality works fine in the non-superboard games, so there must be a portion of either RAM or EEPROM memory that is not being saved in the *.nv files.&lt;br /&gt;&lt;br /&gt;I first confirmed the EEPROM portion of the NVRAM file and all appeared fine.  So I started to dig around the CMOS portion.  Earlier on I had determined that the superboard game data ROM intersperses its data in memory at 0x1000, 0x3000, 0x5000 etc.. up to 0xf000, in blocks of 0x1000.  This was nearly correct.  The mistake was, that 0x1000-0x1fff is actually extended RAM for the superboard games, not game data ROM memory.&lt;br /&gt;&lt;br /&gt;So not only do superboards contain an extra data ROM chip, they also tend to use a larger RAM chip than the normal board sets (twice as large to be exact).  With this notion in hand, I updated the driver accordingly and the bug was fixed.&lt;br /&gt;&lt;br /&gt;The new changes should be reflected in the MAME source during a future update.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/3097854564656132648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=3097854564656132648' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/3097854564656132648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/3097854564656132648'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2008/01/superboard-revisited.html' title='Superboard Revisited'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-6120532435249517634</id><published>2007-12-14T06:54:00.000-08:00</published><updated>2007-12-14T07:29:04.428-08:00</updated><title type='text'>Testing on a PE+ Machine</title><content type='html'>&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/R2KZPuqfKiI/AAAAAAAAAFE/TrMyeM2x3DA/s1600-h/tcpm06.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5143842219913849378" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_bVg1g8504p4/R2KZPuqfKiI/AAAAAAAAAFE/TrMyeM2x3DA/s320/tcpm06.jpg" border="0" /&gt;&lt;/a&gt; Here is a small update on the new game code I am writing for the PE+ platform.&lt;br /&gt;&lt;br /&gt;I finally got around to burning the code on a chip and putting it in my real machine. The results were amazingly good. I was worried about the watchdog timer, but the code I put in place to support it works just fine.&lt;br /&gt;&lt;br /&gt;I discovered some interesting details about the machine as I tried to enable certain features within my game.&lt;br /&gt;&lt;br /&gt;The coin comparator turns on the coin-lockout feature by default. This means that any coins put into the machine are immediately rejected and come out in the little coin reject tray. I added code to turn off the coin-lockout and any coins inserted after that pass through the ABC optics and into the hopper. I have code in place to check for the proper ABC sequence and any coin-in timeouts before accepting the coin. These functions appear to be completely working.&lt;br /&gt;&lt;br /&gt;Next was attempting to payout a coin from the hopper (the area that holds all the coins inside the machine). In order to successfully do this, you must enable both Hopper 1 and Hopper 2 outputs. This makes the hopper motor spin which in turn drives coins up a bar and out of the machine. At the end of the payout chute is a sensor that is triggered as the coin is leaving the machine. By creating code to enable the motor and count the number of coins passing through the sensor, I was able to acurately dispense any number of coins. &lt;br /&gt;&lt;br /&gt;There is also support for testing when the hopper is empty, or a coin-out timeout condition occurs.  And I added code to turn on the diverter when the hopper is full.  This is just a simple gate that diverts coins into an overflow bucket when the hopper cannot hold anymore coins.&lt;br /&gt;&lt;br /&gt;With this greater understanding of the hopper/payout process, I was able to fix a bug in the MAME driver that currently has issues with the hopper empty and coin-out timeout conditions. I will be submitting the fix for the next update.&lt;br /&gt;&lt;br /&gt;Technically I believe I have most aspects of the machine covered that I will need to finish my game.  There are some additional pieces I may add once the game is solid, but they are somewhat optional.  This list of extra features would include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;EEPROM Support to backup the battery-backed RAM&lt;/li&gt;&lt;li&gt;Music Option (The game currently uses tones only)&lt;/li&gt;&lt;li&gt;Dollar Bill Validator support (I would need to buy one for testing)&lt;/li&gt;&lt;li&gt;Progressive Jackpot Feature (May need partial DUART support)&lt;/li&gt;&lt;li&gt;Card Animation&lt;/li&gt;&lt;li&gt;Attract Mode Animation (Blinking Play 5 Coins)&lt;/li&gt;&lt;li&gt;Double Up Feature&lt;/li&gt;&lt;li&gt;Soft Meters (Keeps track of coin counts etc)&lt;/li&gt;&lt;li&gt;Joker Feature (Optional but would reduce paytables)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;There is plenty of testing and coding to do, but I believe my knowledge of the machine is growing and will allow me to further solidify the current MAME driver over time.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/6120532435249517634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=6120532435249517634' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/6120532435249517634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/6120532435249517634'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/12/testing-on-pe-machine.html' title='Testing on a PE+ Machine'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_bVg1g8504p4/R2KZPuqfKiI/AAAAAAAAAFE/TrMyeM2x3DA/s72-c/tcpm06.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-6269092970073324468</id><published>2007-11-29T17:33:00.000-08:00</published><updated>2007-11-29T18:31:42.555-08:00</updated><title type='text'>3 Card Poker Diversion</title><content type='html'>&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/R09rKBUTktI/AAAAAAAAAEU/3mTDDJShkLk/s1600-R/tcp12.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5138443519749493458" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_bVg1g8504p4/R09rKBUTktI/AAAAAAAAAEU/_H3pciaOXCc/s320/tcp12.JPG" border="0" /&gt;&lt;/a&gt;Looks like my MAME adventure has changed course slightly for the time being. After learning so much about the PE+ hardware and emulating it, I decided to try my hand at creating a new romset for this platform from scratch!&lt;br /&gt;&lt;br /&gt;The results so far are the many pictures posted here. I decided to create a game that is not currently found on this platform, and chose to go with a 3-card poker game.&lt;br /&gt;&lt;br /&gt;The rules of the game are fairly straight-forward. You and the dealer are dealt 3 cards each and you must obtain a higher hand than the dealer. It is classic stud poker, where you don't discard and draw.&lt;br /&gt;&lt;br /&gt;Besides the normal "ante" wager. You can place a bonus wager on the final value of your hand dealt. This "Pair Plus" wager pays even if you end up losing the hand. The bonus wager only pays if your hand is a pair or better. A paytable determines the payout for each of the bonus hands. &lt;a href="http://bp0.blogger.com/_bVg1g8504p4/R09sGBUTkuI/AAAAAAAAAEc/lJ966nebGFo/s1600-R/tcp13.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5138444550541644514" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_bVg1g8504p4/R09sGBUTkuI/AAAAAAAAAEc/b92Esu73bV4/s320/tcp13.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once you receive your hand you can decide to either play or fold. If you play, you must place a second wager that matches your original ante. If you fold, you lose your ante wager, but can still receive your bonus payoff if you have a pair or better.&lt;br /&gt;&lt;br /&gt;If you decide to play, the dealers cards are revealed and you are paid even money for your ante wager if you have a higher hand than the dealer. If the dealer hand qualifies (Queen high or better), your play wager also pays even money, otherwise its a push. If a tie occurs, you push both bets. &lt;a href="http://bp0.blogger.com/_bVg1g8504p4/R09tyBUTkvI/AAAAAAAAAEk/iEMvO8hNA7w/s1600-R/tcp01.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5138446405967516402" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_bVg1g8504p4/R09tyBUTkvI/AAAAAAAAAEk/e56ywt3OQU8/s320/tcp01.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm developing the application using SDCC and compiling for the i8052 platform.  Once compiled I convert the .HEX file to a .BIN file and test it under MAME.  So far I have the video, inputs and sound mostly working.  Its interesting to code from the other side of the platform.  Things as simple as random number generators (which is done), etc. can be a pain to figure out, but once I am done, I will have a solid SDK for building other games.&lt;br /&gt;&lt;br /&gt;I have been trying to create a game in the same style as IGT and therefore I have been adding support for the multiple operator screens that are used to setup the machine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/R09w0hUTkwI/AAAAAAAAAEs/UFzg4mnsu1Q/s1600-R/tcp02.JPG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_bVg1g8504p4/R09w0hUTkwI/AAAAAAAAAEs/2sKmNON5CHk/s320/tcp02.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5138449747452072706" /&gt;&lt;/a&gt;I will eventually burn the game onto a chip and test it in my real machine.  But I want to make sure I have most of the bugs worked out first in MAME.  Burning chips and disassembling the machine to pop in the chip takes too much time, but will need to be done sometime in the future to make sure I didn't miss something in the code (like the watchdog timer which the MAME driver ignores).&lt;br /&gt;&lt;br /&gt;There is still plenty of code required to finish the game, but I am learning a lot about this machine as I go.  And I currently have a lot of useful code for my PE+ SDK.&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/R09zHBUTkxI/AAAAAAAAAE0/efQTEvoNbL8/s1600-R/tcp03.JPG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_bVg1g8504p4/R09zHBUTkxI/AAAAAAAAAE0/KSV_vM6zsfc/s320/tcp03.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5138452264302908178" /&gt;&lt;/a&gt;&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/R09zwRUTkyI/AAAAAAAAAE8/UskWqt8Jk5o/s1600-R/tcp04.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_bVg1g8504p4/R09zwRUTkyI/AAAAAAAAAE8/pdk-FHLFI8k/s320/tcp04.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5138452972972512034" /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/6269092970073324468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=6269092970073324468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/6269092970073324468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/6269092970073324468'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/11/3-card-poker-diversion.html' title='3 Card Poker Diversion'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_bVg1g8504p4/R09rKBUTktI/AAAAAAAAAEU/_H3pciaOXCc/s72-c/tcp12.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-7955377715189957082</id><published>2007-11-08T07:01:00.000-08:00</published><updated>2007-11-08T07:58:14.130-08:00</updated><title type='text'>Superboard, Keno and Slots</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/RzMlEtqIbDI/AAAAAAAAADo/I5EgPOe5C_s/s1600-h/ttd.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5130485163411139634" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_bVg1g8504p4/RzMlEtqIbDI/AAAAAAAAADo/I5EgPOe5C_s/s320/ttd.jpg" border="0" /&gt;&lt;/a&gt; The PE+ machine has at least two varieties of motherboards. The basic board I have been emulating and the superboard version. The superboard has an additional socket on it for "game data". The superboard is backwards compatable with most or all of the non-superboard games (those that begin with PP or PS etc). The superboard specific games generally are in the format of XPnnnnnn or XSnnnnnn with game data roms in a format of XnnnnnnP or XnnnnnnS. (P for poker and S for Slots)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Internally, the super board maps the game data rom in all the external addresses the non-superboard had not used. After tracing the schematics, I determined the addresses are $1000, $3000, $5000, $7000, $9000, $B000, $D000 and $F000. So even though the game rom is stored on a 64k chip, only every other page actually can contain data. This essentually adds 32K of information to the superboard romsets.&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/RzMolNqIbEI/AAAAAAAAADw/CtIplH1ePeo/s1600-h/dw.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5130489020291771458" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_bVg1g8504p4/RzMolNqIbEI/AAAAAAAAADw/CtIplH1ePeo/s320/dw.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;With these changes added to the driver, I can now support the rather large list of superboard roms too. The slot pictured above is the Triple Triple Diamond Video Slot (XS000006) romset for the superboard. The slot driver uncovered some additional issues with video processing that I had not encountered before. Once I figured out the issue, the slot reels lined up nicely and the gameplay was correct.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Another romset now supported is the Deuces Wild Video Poker (XP000019). It is similar to many of the video poker romsets but has a few different graphics and gameplay with 2's being wild.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/RzMqRdqIbGI/AAAAAAAAAD8/AM6gl0rSk1Q/s1600-h/keno.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5130490880012610658" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_bVg1g8504p4/RzMqRdqIbGI/AAAAAAAAAD8/AM6gl0rSk1Q/s320/keno.jpg" border="0" /&gt;&lt;/a&gt;Lastly, I added support for a non-superboard version of Keno (KE1012). The romset I have has a bad dump of the CG files so there is some residue on the screen on some of the larger letters. The game uses a lightpen for input, so I had to add lightpen support, but it seems to be working just fine now.&lt;/div&gt;&lt;br/&gt;&lt;div&gt;At this point I am finding some small issues with the coin hopper timing when the machine tries to payout coins.  I sometimes get a hopper empty or coin-out timeout message.  It appears I will need to do something similar as the ABC optics for the coin-in mechanism, but not as complex.  Some initial code appears to work on the non-superboard romsets. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/7955377715189957082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=7955377715189957082' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/7955377715189957082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/7955377715189957082'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/11/superboard-keno-and-slots.html' title='Superboard, Keno and Slots'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_bVg1g8504p4/RzMlEtqIbDI/AAAAAAAAADo/I5EgPOe5C_s/s72-c/ttd.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-2714396914916828367</id><published>2007-11-05T16:34:00.000-08:00</published><updated>2007-11-05T16:59:56.062-08:00</updated><title type='text'>EEPROM Support and Blackjack</title><content type='html'>&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/Ry-21x4L_iI/AAAAAAAAADg/zbzaaVsK8vY/s1600-h/bj.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5129519535636610594" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_bVg1g8504p4/Ry-21x4L_iI/AAAAAAAAADg/zbzaaVsK8vY/s320/bj.jpg" border="0" /&gt;&lt;/a&gt; Since the last time I posted, I worked on adding I2C EEPROM support to the driver.  Initially I spent a bunch of time creating the code I needed from a couple different sources I found in the MAME code base.  Once I got the code working, I began to test the driver and things looked pretty good.  A couple of days later, another MAME developer (smf) produced a much better library then the one I had cobbled together and helped me hook it into my driver and replace the I2C code I had already in place.  The newer I2C driver worked great too and is now part of the MAME core.&lt;br /&gt;&lt;br /&gt;Now that the I2C code is in the driver, a lot of hacks have been removed.  The following is the sequence of events that take place when you load a game for the first time.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The first time in, the CMOS (battery-backed RAM) and the EEPROM will both be empty.  You will get a "Call Attendant - CMOS Data" screen, and when you open the door and press the Self-Test button, it will attempt to load values from the EEPROM to the CMOS.&lt;/li&gt;&lt;li&gt;The next time you start the game, you will get a "Call Attendant - EEPROM Data" screen.  When you open the door and press the Self-Test button, it will attempt to load the EEPROM with default data found in the game code.&lt;/li&gt;&lt;li&gt;At this point, both the CMOS and EEPROM contain some default values and you must enter operator mode to fill in any missing values such as denomination.&lt;/li&gt;&lt;li&gt;From that point on, all restarts of the game will react properly and the game will display.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I have found a few games that are having issues when using the 8052 specific Timer 2.  These games do not let you proceed past step 1 as of yet.  I'm thinking the I8051 driver in MAME may not be working for this scenario, or I am missing some other piece in my driver.&lt;/p&gt;&lt;p&gt;Finally, as you can see from the picture above, I have included in the driver support for a new fully working clone (PEBE0014)  which is the IGT Blackjack program that also runs on the PE+ platform.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/2714396914916828367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=2714396914916828367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/2714396914916828367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/2714396914916828367'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/11/eeprom-support-and-blackjack.html' title='EEPROM Support and Blackjack'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_bVg1g8504p4/Ry-21x4L_iI/AAAAAAAAADg/zbzaaVsK8vY/s72-c/bj.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-8880387526504003208</id><published>2007-10-25T14:31:00.000-07:00</published><updated>2007-10-25T14:59:13.867-07:00</updated><title type='text'>The ABC's of Coin Optics</title><content type='html'>&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/RyENgh4L_gI/AAAAAAAAADQ/XPLjHpF_kDM/s1600-h/ci.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125392703425347074" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_bVg1g8504p4/RyENgh4L_gI/AAAAAAAAADQ/XPLjHpF_kDM/s320/ci.jpg" border="0" /&gt;&lt;/a&gt; After a bunch of research and trial and error, I finally got the coin-in functionality to work.&lt;br /&gt;&lt;br /&gt;This type of IGT machine uses an ABC coin optic detector translator.  Basically what happens is the coin is dropped into the coin slot and passes through 3 different optics (A, B &amp;amp; C).  As the coin passes through each optic, the optic's state changes from zero to one for a short period of time.  This sequence is important to the game program and must be in the following order:&lt;br /&gt;A-&gt;AB-&gt;ABC-&gt;BC-&gt;C&lt;br /&gt;&lt;br /&gt;So first the A Optic is triggered, then the B Optic is triggered (while A is still active) and finally the C Optic is triggered (while A &amp;amp; B still active).  From there the optics begin to shut off starting with A, then B, then C.&lt;br /&gt;&lt;br /&gt;The reason for such complexity is to prevent "coin stringing".  Where someone attaches a coin to a string and tries to pull it back out of the slot.  In this scenario, the optics would be triggered correctly on the way down, but would start to trigger again on the way up and screw up the sequence expected.  Once the sequence is broken, the coin either produces a "Jam" error message or "Coin Sequence" error.&lt;br /&gt;&lt;br /&gt;By adding code to the driver to simulate a correct sequence of the optics, I am now able to press a key to insert coins, and the game shows a coin in.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/8880387526504003208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=8880387526504003208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/8880387526504003208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/8880387526504003208'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/abcs-of-coin-optics.html' title='The ABC&apos;s of Coin Optics'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_bVg1g8504p4/RyENgh4L_gI/AAAAAAAAADQ/XPLjHpF_kDM/s72-c/ci.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-1318000699316457154</id><published>2007-10-23T16:58:00.000-07:00</published><updated>2007-10-23T17:07:15.843-07:00</updated><title type='text'>Door Closure</title><content type='html'>&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/Rx6K1LkyvNI/AAAAAAAAADI/mmQRL9xdX60/s1600-h/dc.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5124686072239013074" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_bVg1g8504p4/Rx6K1LkyvNI/AAAAAAAAADI/mmQRL9xdX60/s320/dc.jpg" border="0" /&gt;&lt;/a&gt; Well I finally got the code mostly working for the door closure problems I was having.  It seems the door optics like to pulse on and off when in a closed state.  The game now starts with the door closed and I can press a key to simulate opening the door.  However, I cannot yet get back to a closed door without restarting.&lt;br /&gt;&lt;br /&gt;Still this is important, since it allows me to test the coin-in optics now.  The machine tends to bypass the coin detection when the door is open, so having it closed now will help in debugging.&lt;br /&gt;&lt;br /&gt;The door closure also allowed me to see for the first time the "attract mode" animation on the cards.  As you can see in the picture, the face cards animate when the game is idle, assuming you have the option set to do so in the operator setup.&lt;br /&gt;&lt;br /&gt;Time to figure out the coin-in sequence now.  Its obviously an important feature to implement.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/1318000699316457154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=1318000699316457154' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/1318000699316457154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/1318000699316457154'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/door-closure.html' title='Door Closure'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_bVg1g8504p4/Rx6K1LkyvNI/AAAAAAAAADI/mmQRL9xdX60/s72-c/dc.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-3437356908365389183</id><published>2007-10-18T14:49:00.000-07:00</published><updated>2007-10-18T14:59:45.368-07:00</updated><title type='text'>Minor Update</title><content type='html'>&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/RxfU97kyvMI/AAAAAAAAADA/xfQrRMVsv-Y/s1600-h/pp0188.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122797261586349250" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_bVg1g8504p4/RxfU97kyvMI/AAAAAAAAADA/xfQrRMVsv-Y/s320/pp0188.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Not much new to report today.  I updated the driver to support a new romset, PP0188 - Standard Draw Poker.  A screenshot of it is pictured here with the paytable option on.  This rom also has an AutoHold feature, but was disabled.  It has been suggested that depending on a casino's location and policies, that they will sometimes enable or disable this feature.&lt;/div&gt;&lt;br/&gt;&lt;div&gt;I had to apply the same code hacks as the PP0516 driver to make it work.  But it does work as far as the others go.&lt;/div&gt;&lt;br/&gt;&lt;div&gt;I just updated my driver against the MAME .120 source and submitted it again.  Hopefully the next revision will have some of the changes and bug fixes I made to the 8051 core.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/3437356908365389183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=3437356908365389183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/3437356908365389183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/3437356908365389183'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/not-much-new-to-report-today.html' title='Minor Update'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_bVg1g8504p4/RxfU97kyvMI/AAAAAAAAADA/xfQrRMVsv-Y/s72-c/pp0188.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-2930773573922595277</id><published>2007-10-16T05:43:00.000-07:00</published><updated>2007-10-16T06:11:55.146-07:00</updated><title type='text'>Timers, Dip Switches and I/O</title><content type='html'>&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/RxSz8rkyvLI/AAAAAAAAAC4/aqtsz-cSpHE/s1600-h/du.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5121916531297664178" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_bVg1g8504p4/RxSz8rkyvLI/AAAAAAAAAC4/aqtsz-cSpHE/s320/du.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Well, it looks like I figured out why I could play credits, see the card backs but then the deal-draw button would cause the game to hang.  The game code was in an endless loop waiting for an interrupt to set a variable to allow it to continue.&lt;/p&gt;&lt;p&gt;I proceeded to trace why the interrupt wasn't firing and found out the code was using "split timer" mode for Timer 0.  I start looking at the 8051 core code and find out that it was never implemented!  So, the only thing to do is wait for someone else to do it, or add it myself.  I went for the later.  After adding the code to support split timers, I discovered the 8051 core had some more bugs in the way it determined what timer mode was to be used.  This bug (mistake) was repeated in the serial transmit part of the code, so I fixed it there too.  &lt;/p&gt;&lt;p&gt;After these changes my driver started to work a lot better.  The timing still seemed a bit wrong so I went back to the 8051 core looking for other bugs.  Upon searching I also found that there were several opcodes with the wrong cycle counts.  I update the code for that too.&lt;/p&gt;&lt;p&gt;I'm thinking the 8051 core may still have other issues to be found, but I have progressed enough to play credits to the end game.  In other words, I can bet credits, hold cards, draw cards and obtain a payout.  In between I am able to double up when the option is enabled.&lt;/p&gt;&lt;p&gt;I found out my game supports an "Autohold" feature which is really nice.  The only way to enable it is to set one byte in the program code and adjust the checksum, but I may end up doing that for my real machine.&lt;/p&gt;&lt;p&gt;A couple of other misc thing I did was to add support for I/O addresses and the dip switches are now working.&lt;/p&gt;&lt;p&gt;At this point, some open issues are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Door Closure&lt;/li&gt;&lt;li&gt;Sensing Coin-In&lt;/li&gt;&lt;li&gt;EEPROM support&lt;/li&gt;&lt;li&gt;Timing&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I expect there will be more 8051 core to look at to determine the timing issues.  The other open issues are just a matter of time.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/2930773573922595277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=2930773573922595277' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/2930773573922595277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/2930773573922595277'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/timers-dip-switches-and-io.html' title='Timers, Dip Switches and I/O'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_bVg1g8504p4/RxSz8rkyvLI/AAAAAAAAAC4/aqtsz-cSpHE/s72-c/du.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-2561615525717997143</id><published>2007-10-12T14:18:00.000-07:00</published><updated>2007-10-12T14:37:50.622-07:00</updated><title type='text'>Layout with Lamps</title><content type='html'>&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/Rw_k5LkyvKI/AAAAAAAAACw/c74D0bzlB8o/s1600-h/layout.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5120562972354329762" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_bVg1g8504p4/Rw_k5LkyvKI/AAAAAAAAACw/c74D0bzlB8o/s320/layout.jpg" border="0" /&gt;&lt;/a&gt; I've done a bunch of things since the last post. I mapped all the output devices to either lamps or output calls. With that I then created a layout file for displaying some of the lamps while playing. The little red square in the upper right corner is the change request light. Overall, these new lamps should help debug some areas a little better.&lt;br /&gt;&lt;br /&gt;I found some problems with the way I did paged mode addressing to external ram. With those changes my memory model cleaned up considerably. All cmos data is now in one block #000-fff.&lt;br /&gt;&lt;br /&gt;With the cmos memory now organized properly, I was able to load it on driver init with preset values. This let me populate the machine with things like max coins in, current denomination, background color, music choice, game type, drop door, bill acceptor, double up, animation, paytable and deal speed. I noticed I started getting the little "RESTART" and "GAME OVER" text on screen now. This is a good sign. That area of screen was not painting before, and usually tells the operator what has happened recently.&lt;br /&gt;&lt;br /&gt;I was able to remove one code hack that was testing cmos memory but failing. That code now runs without errors.&lt;br /&gt;&lt;br /&gt;Finally, I created a child driver for the rom set "Set038" that I was testing with earlier. This new driver is called "peset038", but still contained in the same file "peplus.c".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am still having trouble debugging the door sensors, and I believe I will need to tackle the eeprom soon. There are still areas of game code that need hacks removed, and they relate to the eeprom.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/2561615525717997143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=2561615525717997143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/2561615525717997143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/2561615525717997143'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/layout-with-lamps.html' title='Layout with Lamps'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_bVg1g8504p4/Rw_k5LkyvKI/AAAAAAAAACw/c74D0bzlB8o/s72-c/layout.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-6472936065447337742</id><published>2007-10-09T20:47:00.001-07:00</published><updated>2007-10-09T20:58:40.840-07:00</updated><title type='text'>More Progress</title><content type='html'>&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/RwxLWrkyvJI/AAAAAAAAACo/wClzJMkqt2s/s1600-h/game.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5119549729439661202" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_bVg1g8504p4/RwxLWrkyvJI/AAAAAAAAACo/wClzJMkqt2s/s320/game.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;After a few game code hacks to bypass error codes, I was able to get the game to produce a "Out of Service" screen. From this screen I could get into the operator mode and setup all the game settings for denomination, sound, double-up etc. Basically, all operator mode screens became available.&lt;/div&gt;&lt;br/&gt;&lt;div&gt;After going through that setup I was able to get the normal game screen to appear with it showing cards from the last hand. With that screen I pressed "Play Credit" and it deducted credits and displayed 5 card backs like the picture shown here. I also re-ran the test with the "Max Credits" button and it peeled off 5 credits in a row like it should. I setup the ram to have 20,000 credits to start with in order to play.&lt;/div&gt;&lt;br/&gt;&lt;div&gt;Unfortunately, the "Deal-Spin-Start" button did not reveal the cards in my hand to allow me to press the Hold buttons. My theory at this point is the door sensors are still not 100%. I think they may pulse on/off instead of stay in a constant state. Either way, this is a major milestone.&lt;/div&gt;&lt;br/&gt;&lt;div&gt;Obviously I need to go back and find out what I need to do to remove the game code hacks, but being able to get this deep into the game is really helping document memory locations.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/6472936065447337742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=6472936065447337742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/6472936065447337742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/6472936065447337742'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/more-progress.html' title='More Progress'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_bVg1g8504p4/RwxLWrkyvJI/AAAAAAAAACo/wClzJMkqt2s/s72-c/game.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-580845081897093748</id><published>2007-10-06T13:48:00.000-07:00</published><updated>2007-10-06T14:17:33.006-07:00</updated><title type='text'>Set and Clear</title><content type='html'>&lt;a href="http://bp0.blogger.com/_bVg1g8504p4/Rwf07bkyvHI/AAAAAAAAACY/FkiJaJ4dYug/s1600-h/set038.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5118328803381394546" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_bVg1g8504p4/Rwf07bkyvHI/AAAAAAAAACY/FkiJaJ4dYug/s320/set038.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Well I finally dumped and disassembled the Set038 chip that is used to setup a PE+ machine that has had a battery replaced or just a bad data image.&lt;/p&gt;&lt;p&gt;This fairly simple program is also used to setup a denomination and choose if you have a bill acceptor attached.&lt;/p&gt;&lt;p&gt;I've been using this program to better understand what goes into the battery-backed ram and how the cmos is accessed.&lt;/p&gt;&lt;p&gt;After a lot of investigation in the code, I found that the cmos is attached to address #9000 using an I2C bus as a communication mechanism. It appears that #9000 is a write only address to affect (wc, scl and sda). Further analysis seems to point to #8000 bit 7 as the read bit for data and acks. The #8000 address is normally used for Output Bank A, but bit 7 is not documented in the operator screen as being used.&lt;/p&gt;&lt;p&gt;Based on schematics, and a visual look-over, I have a X2404P cmos which can hold 512 bytes (4K-bits) of information. &lt;/p&gt;&lt;p&gt;I found some code that tests the integrity of the cmos etc and commented it out in order to see what would happen. The screen above is the result. I am able to fully run the Set038 chip program in the emulator and simulate saving data to battery-backed ram. The program fails if I don't comment out the block of code that tests the device. Tracing this particular dump has really helped me understand the inner workings of the cmos communication.&lt;/p&gt;&lt;p&gt;My next step is to make it work without commenting out the section of code that verifies the cmos etc. This will require driver changes to simulate a 24c04 eeprom.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/580845081897093748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=580845081897093748' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/580845081897093748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/580845081897093748'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/set-and-clear.html' title='Set and Clear'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_bVg1g8504p4/Rwf07bkyvHI/AAAAAAAAACY/FkiJaJ4dYug/s72-c/set038.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-221443906695531130</id><published>2007-10-02T22:28:00.000-07:00</published><updated>2007-10-03T14:46:00.559-07:00</updated><title type='text'>Call Attendant</title><content type='html'>&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/RwQJqbkyvGI/AAAAAAAAACQ/gW2myq1lCsk/s1600-h/ca.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5117225701160959074" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_bVg1g8504p4/RwQJqbkyvGI/AAAAAAAAACQ/gW2myq1lCsk/s320/ca.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now that things are mostly working I decided I wanted to see if I can figure out how to get a coin into the machine so I can play.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;At this point the system comes up with a single screen that just says "CALL ATTENDANT". If I open the door and press the "Self Test" button. The screen to the right is shown. It appears there is some missing data in my external RAM.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The RAM is usually kept via a battery attached to the motherboard. If you replace the battery or pull the RAM chip, you will lose all the contents inside. This is where the coin counts and settings are stored. I have been playing with those values for a while, but now may be at a point where I need to see what a valid RAM looks like.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I will be dumping a "Set and Clear" ROM that is used in real life to fix such an issue. I will need to disassemble that source of that and figure out what it is doing in order to make my RAM match what a real machine would have.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/221443906695531130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=221443906695531130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/221443906695531130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/221443906695531130'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/call-attendant.html' title='Call Attendant'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_bVg1g8504p4/RwQJqbkyvGI/AAAAAAAAACQ/gW2myq1lCsk/s72-c/ca.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-6061844553283047181</id><published>2007-10-01T21:19:00.000-07:00</published><updated>2007-10-03T14:45:38.390-07:00</updated><title type='text'>Background Color</title><content type='html'>&lt;a href="http://bp3.blogger.com/_bVg1g8504p4/RwQHx7kyvFI/AAAAAAAAACE/jaq3uQSTz0g/s1600-h/bg.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5117223630986722386" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_bVg1g8504p4/RwQHx7kyvFI/AAAAAAAAACE/jaq3uQSTz0g/s320/bg.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The screen that lets you change the background color wasn't working before. It would let you select and change red, green and blue values, but it never refreshed the screen.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;I found that the code writes to location #6000 whenever the value changes. With a change to my driver to update the internal palettes whenever #6000 is updated, I was able to make it work!&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;I don't have code to load the palettes upon startup with a predefined value yet, but I know the background is saved in memory for when you power off the machine. This is something I will have to add later. For right now, it will boot up with the default background in the color prom.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/6061844553283047181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=6061844553283047181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/6061844553283047181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/6061844553283047181'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/10/background-color.html' title='Background Color'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_bVg1g8504p4/RwQHx7kyvFI/AAAAAAAAACE/jaq3uQSTz0g/s72-c/bg.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-9025182398738691481</id><published>2007-09-29T20:08:00.000-07:00</published><updated>2007-10-03T14:45:19.649-07:00</updated><title type='text'>Current Game Display Part II</title><content type='html'>&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/RwQE7bkyvEI/AAAAAAAAAB8/6iV4ONTiokI/s1600-h/crd.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5117220495660596290" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_bVg1g8504p4/RwQE7bkyvEI/AAAAAAAAAB8/6iV4ONTiokI/s320/crd.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;As you can see I got the current game display showing cards!&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The problem was actually quite big. Up to this point the screens I had been viewing only used graphic characters found in the roms at locations between 0x00 and 0xFF. The card graphics are located beyond the 8-bit boundary of 0xFF and needed a 16-bit address in order to find them.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;I found that the Port 1 actually stores the upper address I needed. It also stores the palette number. Up to this point, the palette had alway been zero, but once I got the value from P1 I had all I needed to display characters in higher addresses.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Another problem is the 8052 driver didn't seem to have a way for me to fetch the value of P1, so I had to add a new function to allow me access to internal ram values. Yet another change to the 8052 core that I will need to go back and document.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/9025182398738691481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=9025182398738691481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/9025182398738691481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/9025182398738691481'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/09/current-game-display-part-ii.html' title='Current Game Display Part II'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_bVg1g8504p4/RwQE7bkyvEI/AAAAAAAAAB8/6iV4ONTiokI/s72-c/crd.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-1917670710769432531</id><published>2007-09-27T20:02:00.000-07:00</published><updated>2007-10-03T14:44:46.603-07:00</updated><title type='text'>Current Game Display</title><content type='html'>&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/RwQDabkyvDI/AAAAAAAAAB0/CJwDk8ndous/s1600-h/cg.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5117218829213285426" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_bVg1g8504p4/RwQDabkyvDI/AAAAAAAAAB0/CJwDk8ndous/s320/cg.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;I finally figured out how to advance to the next screen. It seems the "Current Denomination" and "Maximum Coins" need to be populated before you can go on. It has to do with showing coin counts for each grouping like "with 1 coin in", "with 2 coins in" etc.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Now that I made it to the current game display I figured I would see some cards on screen. Either the current game data values are corrupt (since I don't have any game history), or I am looking up the wrong graphic characters.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/1917670710769432531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=1917670710769432531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/1917670710769432531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/1917670710769432531'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/09/current-game-display.html' title='Current Game Display'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_bVg1g8504p4/RwQDabkyvDI/AAAAAAAAAB0/CJwDk8ndous/s72-c/cg.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-8103322908848863418</id><published>2007-09-26T19:58:00.000-07:00</published><updated>2007-10-03T14:44:14.078-07:00</updated><title type='text'>Machine Counts</title><content type='html'>&lt;a href="http://bp2.blogger.com/_bVg1g8504p4/RwQCdrkyvCI/AAAAAAAAABs/wjIvtLW8lNY/s1600-h/jp.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5117217785536232482" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_bVg1g8504p4/RwQCdrkyvCI/AAAAAAAAABs/wjIvtLW8lNY/s320/jp.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Well now that the inputs and door sensors are working, I thought I would look at the machine counts screens.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It seems that I will need to map the memory locations for each of the amounts, but most appear to have zeros in them.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The values are stored in a 4 byte BCD format and support values from 0 to 99999999.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I can't seem to get past a certain screen and advance to the current game display screen. I need to figure out what is blocking me from going forward.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/8103322908848863418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=8103322908848863418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/8103322908848863418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/8103322908848863418'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/09/machine-counts.html' title='Machine Counts'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_bVg1g8504p4/RwQCdrkyvCI/AAAAAAAAABs/wjIvtLW8lNY/s72-c/jp.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-3582628353699733633</id><published>2007-09-24T18:42:00.000-07:00</published><updated>2007-10-03T14:43:26.132-07:00</updated><title type='text'>Sound of Music</title><content type='html'>&lt;a href="http://bp1.blogger.com/_bVg1g8504p4/RwP_GrkyvBI/AAAAAAAAABk/xdTmJiLj-J4/s1600-h/s1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5117214091864357906" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_bVg1g8504p4/RwP_GrkyvBI/AAAAAAAAABk/xdTmJiLj-J4/s320/s1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Well, the music now works! At first the speed was really slow, so I had to finally determine the speed of the 80c32 CPU and the Sound chip.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;It turns out that the cpu is exactly 7.3728 MHz or (2 x 3.6864) and the sound chip is 1.6666 MHz or (20.000/12). These values line up nicely with the crystals found on the motherboard (3.6864 and 20.000).&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;I found there are 5 tones and 9 songs. The 9th song is not played during operator mode, but is used I think when paying out credits or coins. Its just a song where the notes keep getting higher and higher. This seems to match how the payout process works.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/3582628353699733633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=3582628353699733633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/3582628353699733633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/3582628353699733633'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/09/sound-of-music.html' title='Sound of Music'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_bVg1g8504p4/RwP_GrkyvBI/AAAAAAAAABk/xdTmJiLj-J4/s72-c/s1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5785947376493681536.post-3561391179187206118</id><published>2007-09-23T21:37:00.000-07:00</published><updated>2007-10-03T14:43:06.918-07:00</updated><title type='text'>Sound</title><content type='html'>After tracing the game code, I found that the sound chip is accessed via external ram at #4000. Specifically, #4000 is the control port, and #4004 is the write port.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I setup the driver to map to these and navigate to the output test screen and fire off the sound test. It works! I hear a 'ping' sound just like my original hardware. Its not exact, but I'm sure its due to the improper frequency I setup for the cpu.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I know that I can mess with the sound settings in operator mode in a page further down, so I advance the pages but cannot get to the sound screen. There is probably a variable in memory that needs to be set in order to let it know that that page is available.</content><link rel='replies' type='application/atom+xml' href='http://stolistic.blogspot.com/feeds/3561391179187206118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5785947376493681536&amp;postID=3561391179187206118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/3561391179187206118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5785947376493681536/posts/default/3561391179187206118'/><link rel='alternate' type='text/html' href='http://stolistic.blogspot.com/2007/09/sound.html' title='Sound'/><author><name>Stolistic</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>