Jump to content

edwardb

  • Posts

    233
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by edwardb

  1. Yes...naming no names, but they were a bloody nightmare. Never paid their bills, and when they did, they always wanted much more in return next time. That's why I stopped doing machines - they had your hardware, and therefore by the proverbial balls. With online, if you don't get paid, you just switch the game off on their website, or replace the game with a message saying "this casino doesn't pay its bills - perhaps consider playing somewhere else?"
  2. There were effectively 2 chips on Pluto 6. Pluto 5 was cracked a long time ago so they fixed it
  3. OK. On Pluto 5 there were 3x 4-byte values which would be set in the ROM before compilation. There was some IO mapping stuff going on in the FPGA. I could probably get this stuff compiling again, change the FPGA code over then look at the ROMs and work out what goes where.... /* APOLLO GAMING LTD - SOFTWARE R&D COPYRIGHT 2008 (c) APOLLO GAMING LIMITED Filename: FPGA.h Author: EB Revision History: - 19/05/2008 Created v1.0 ---------------------------------------------------------------------------------------------- Contains data for specific FPGA versions 1. Development 2. Apollo SECURE FPGA 1 3. That Dutch Company Who Was A Pain In The Arse */ #ifndef __FPGA_H #define __FPGA_H /**************************** BEGIN DEV FPGA VERSION HERE ***************************/ #if (DEV_FPGA_VERSION==1) #define FPGA_SIG 0x01 /* value of ident byte */ /* read @FPGA_ID */ #define FPGA_REG_BASE (FPGA_BASE+0x00) /* FPGA registers base */ #define FPGA_IO_BASE (FPGA_BASE+0x20) /* FPGA I/O base */ // Offsets from FPGA_REG_BASE #define FPGA_ID (BYTE*)(FPGA_REG_BASE + 0x01) /* read FPGA ID byte */ #define XCRA (BYTE*)(FPGA_REG_BASE + 0x00) /* FPGA Control Reg A */ #define XMPX (BYTE*)(FPGA_REG_BASE + 0x01) /* Multiplex Control Reg */ #define XDRA (BYTE*)(FPGA_REG_BASE + 0x02) /* data, pins FPGA0-6 */ #define XDRB (BYTE*)(FPGA_REG_BASE + 0x03) /* data, pins FPGA0-6 */ #define XDDRA (BYTE*)(FPGA_REG_BASE + 0x04) /* data dir, FPGA0-6 */ #define XDDRB (BYTE*)(FPGA_REG_BASE + 0x05) /* data dir, FPGA8-14*/ #define SFXR1 (BYTE*)(FPGA_REG_BASE + 0x06) /* SFX Ch 1 byte */ #define SFXR2 (BYTE*)(FPGA_REG_BASE + 0x07) /* SFX Ch 2 byte */ #define XSEC (BYTE*)(FPGA_REG_BASE + 0x07) /* Security Byte */ // Offsets from FPGA_IO_BASE #define AUX_BASE (FPGA_IO_BASE+0x10) /* Base Of Aux Outputs */ #define AUX0 (BYTE*)(AUX_BASE+0x00) /* AUX0 Output */ #define AUX1 (BYTE*)(AUX_BASE+0x01) /* AUX1 Output */ #define AUX2 (BYTE*)(AUX_BASE+0x02) /* AUX2 Output */ #define AUX3 (BYTE*)(AUX_BASE+0x03) /* AUX3 Output */ #define AUX4 (BYTE*)(AUX_BASE+0x04) /* AUX4 Output */ #define AUX5 (BYTE*)(AUX_BASE+0x05) /* AUX5 Output */ #define AUX6 (BYTE*)(AUX_BASE+0x06) /* AUX6/EXT SCL Output */ #define AUX7 (BYTE*)(AUX_BASE+0x07) /* AUX7/EXT SDA Output */ #define OUTPUTS (BYTE*)(FPGA_IO_BASE) /* base of outputs */ #define INPUTS (BYTE*)(FPGA_IO_BASE) /* base of inputs */ #define INPUTS2 (*(volatile char*)FPGA_IO_BASE) /* base of inputs */ #define CSAM0 0x00FFFFF5 #define CSBAR0 0x00000009 #define CSAM1 0x00FFFFF5 #define CSBAR1 0x01000001 #define CSAM2 0x00FFFFFF #define CSBAR2 0x02000003 #define CSAM3 0x00FFFFFF #define CSBAR3 0x03000001 #endif /**************************** BEGIN APOLLO_FPGA_VERSION ***************************/ #if (APOLLO_FPGA_VERSION==1) #define FPGA_SIG 0xca /* value of ident byte */ /* read @FPGA_ID */ #define FPGA_REG_BASE (FPGA_BASE+0x50) /* FPGA registers base */ #define FPGA_IO_BASE (FPGA_BASE+0x00) /* FPGA I/O base */ // Offsets from FPGA_REG_BASE #define FPGA_ID (BYTE*)(FPGA_REG_BASE + 0x01) /* read FPGA ID byte */ #define XCRA (BYTE*)(FPGA_REG_BASE + 0x00) /* FPGA Control Reg A */ #define XMPX (BYTE*)(FPGA_REG_BASE + 0x01) /* Multiplex Control Reg */ #define XDRA (BYTE*)(FPGA_REG_BASE + 0x02) /* data, pins FPGA0-6 */ #define XDRB (BYTE*)(FPGA_REG_BASE + 0x03) /* data, pins FPGA0-6 */ #define XDDRA (BYTE*)(FPGA_REG_BASE + 0x04) /* data dir, FPGA0-6 */ #define XDDRB (BYTE*)(FPGA_REG_BASE + 0x05) /* data dir, FPGA8-14*/ #define SFXR1 (BYTE*)(FPGA_REG_BASE + 0x06) /* SFX Ch 1 byte */ #define SFXR2 (BYTE*)(FPGA_REG_BASE + 0x07) /* SFX Ch 2 byte */ #define XSEC (BYTE*)(FPGA_REG_BASE + 0x07) /* Security Byte */ // Offsets from FPGA_IO_BASE #define AUX_BASE (FPGA_REG_BASE+0x08) /* Base Of Aux Outputs */ #define AUX0 (BYTE*)(AUX_BASE+0x00) /* AUX0 Output */ #define AUX1 (BYTE*)(AUX_BASE+0x01) /* AUX1 Output */ #define AUX2 (BYTE*)(AUX_BASE+0x02) /* AUX2 Output */ #define AUX3 (BYTE*)(AUX_BASE+0x03) /* AUX3 Output */ #define AUX4 (BYTE*)(AUX_BASE+0x04) /* AUX4 Output */ #define AUX5 (BYTE*)(AUX_BASE+0x05) /* AUX5 Output */ #define AUX6 (BYTE*)(AUX_BASE+0x06) /* AUX6/EXT SCL Output */ #define AUX7 (BYTE*)(AUX_BASE+0x07) /* AUX7/EXT SDA Output */ #define OUTPUTS (BYTE*)(FPGA_IO_BASE) /* base of outputs */ #define INPUTS (BYTE*)(FPGA_IO_BASE) /* base of inputs */ // Chip select registers #define CSAM0 0x00FFFFF5 #define CSBAR0 0x00000009 #define CSAM1 0x00FFFFF5 #define CSBAR1 0x01000001 #define CSAM2 0x000000FD #define CSBAR2 0x02000001 #define CSAM3 0x00FFFFFF #define CSBAR3 0x03000001 #endif /**************************** BEGIN DUTCH_FPGA_VERSION ***************************/ #if (DUTCH_FPGA_VERSION==1) //#define FPGA_SIG 0xA2 /* value of ident byte for Peter's Test FPGA */ //#define FPGA_SIG 0x4a /* value of ident byte for Dutch production FPGA */ #define FPGA_SIG 0x7f /* value of ident byte for Peter's dev FPGA */ /* read @FPGA_ID */ #define FPGA_REG_BASE (FPGA_BASE+0x20) /* FPGA registers base */ #define FPGA_IO_BASE (FPGA_BASE+0x40) /* FPGA I/O base */ // Offsets from FPGA_REG_BASE #define FPGA_ID (BYTE*)(FPGA_REG_BASE + 0x01) /* read FPGA ID byte */ #define XCRA (BYTE*)(FPGA_REG_BASE + 0x00) /* FPGA Control Reg A */ #define XMPX (BYTE*)(FPGA_REG_BASE + 0x01) /* Multiplex Control Reg */ #define XDRA (BYTE*)(FPGA_REG_BASE + 0x02) /* data, pins FPGA0-6 */ #define XDRB (BYTE*)(FPGA_REG_BASE + 0x03) /* data, pins FPGA0-6 */ #define XDDRA (BYTE*)(FPGA_REG_BASE + 0x04) /* data dir, FPGA0-6 */ #define XDDRB (BYTE*)(FPGA_REG_BASE + 0x05) /* data dir, FPGA8-14*/ #define SFXR1 (BYTE*)(FPGA_REG_BASE + 0x06) /* SFX Ch 1 byte */ #define SFXR2 (BYTE*)(FPGA_REG_BASE + 0x07) /* SFX Ch 2 byte */ #define XSEC (BYTE*)(FPGA_REG_BASE + 0x07) /* Security Byte */ // Offsets from FPGA_IO_BASE #define AUX_BASE (FPGA_REG_BASE+0x08) /* Base Of Aux Outputs */ #define AUX0 (BYTE*)(AUX_BASE+0x00) /* AUX0 Output */ #define AUX1 (BYTE*)(AUX_BASE+0x01) /* AUX1 Output */ #define AUX2 (BYTE*)(AUX_BASE+0x02) /* AUX2 Output */ #define AUX3 (BYTE*)(AUX_BASE+0x03) /* AUX3 Output */ #define AUX4 (BYTE*)(AUX_BASE+0x04) /* AUX4 Output */ #define AUX5 (BYTE*)(AUX_BASE+0x05) /* AUX5 Output */ #define AUX6 (BYTE*)(AUX_BASE+0x06) /* AUX6/EXT SCL Output */ #define AUX7 (BYTE*)(AUX_BASE+0x07) /* AUX7/EXT SDA Output */ #define OUTPUTS (BYTE*)(FPGA_IO_BASE) /* base of outputs */ #define INPUTS (BYTE*)(FPGA_IO_BASE) /* base of inputs */ // Chip select registers #define CSAM0 0x00FFFFF5 #define CSBAR0 0x00000009 #define CSAM1 0x00FFFFF5 #define CSBAR1 0x01000001 #define CSAM2 0x000000FD #define CSBAR2 0x02000001 #define CSAM3 0x00FFFFFF #define CSBAR3 0x03000001 #endif extern BYTE *const FpgaId; extern BYTE *const Xcra; extern BYTE *const Xmpx; extern BYTE *const Xdra; extern BYTE *const Xdrb; extern BYTE *const Xddra; extern BYTE *const Xddrb; extern BYTE *const Sfxr1; extern BYTE *const Sfxr2; extern BYTE *const Xsec; extern BYTE *const Aux0; extern BYTE *const Aux1; extern BYTE *const Aux2; extern BYTE *const Aux3; extern BYTE *const Aux4; extern BYTE *const Aux5; extern BYTE *const Aux6; extern BYTE *const Aux7; extern void *const Outputs; extern void *const Inputs; extern const SIM40CFG sim40_cfg; extern const TIMERCFG Timer1Cfg; extern const TIMERCFG Timer2Cfg; extern const DMACFG DMA1Cfg; extern const DMACFG DMA2Cfg; #endif /* End----------------------------------------------------------------------------------------------- */
  4. So for Heber's Pluto 5 board you can absolutely brute-force the security on it. There was a handful of bytes which changed depending on the customer; so were someone to try and reverse engineer one of my games (which I'd happily supply the security byte data for) you can prove the ROMs boot up. Then for other games it'd just be a case of amending those bytes and trying again, and repeat until the thing boots.... Pluto 6 was a bit more involved but still should be fairly straightforward to crack.
  5. Hi Saki I don't think Shanghai 5000 or Crown Jewels 5000 have been emulated, unfortunately. I was the programmer of many German fungame machines (Sinbad 2000, Monopoly, Win-A-Gain, Brix, Cashanova from Mazooma, and also Hi Spirits, A Knights Trail, Hopp oder Topp from Loewen). Welcome to Desert Island Fruits ! MfG Ed
  6. Yeah, bit of a cock up, was that! The thing you need to remember - often forgotten in these days where an update is simple to roll out - but to send an engineer to every site with a new set of ROMs is VERY, VERY expensive - you pay for the ROMs (prob £6 a pair) and the time. You sold 2000 machines? Well that's £12k in parts, plus double the same again in paying someone to drive around to fit them all. You can bet the big breweries will be on the phone asking for a discount on their next purchase too.... So yeah - cock ups like this are an expensive pain and best avoided.
  7. Ja. Einige Leute verwenden Google Translate, aber es gibt hier einige Muttersprachler, die Deutsch sprechen. Ich bin kein Deutscher, aber ich war 6 Jahre lang Fungame-Programmierer für Mazooma (Cashanova, Brix, Monopoly) und NSM/Loewen (Hi Spirits, Hopp oder Topp, A Knights Trail). MfG Ed
  8. I'll post some example code from one of my Hungarian games when I get to the office later this week. I should probably write a walkthrough of it, but it's a pretty reasonable example of typical AWP code albeit just not for the UK market (which isn't hard to make functionally work, anyway). I'll be honest - much of the code I saw of games from other coders was utterly diabolical. Sloppy, messy and error prone. As much as I liked BFM/BFG a lot of their game code was a car crash. I remember seeing Crazy Fruits and thinking, christ almighty, this is just a mess. Their system software however was very long winded but robust. I guess that's the difference between systems engineers and game coders. I learnt my trade from an ex-BWB programmer who was incredibly diligent, regimented and whilst not the fastest coder, his games were bulletproof. At the age of 18 that seemed like a good thing to aspire to. My code from back then was neat and tidy, and not complicated - on purpose. I'll sort something out along with some other goodies from way back.... Ed
  9. Right, we're back in business. My EPOCH Hungarian games are now compiling on Windows again, so I'll rebuild them all with the data-capture system disabled, the ROMs uploaded and then at least people can work on emulating those games when they get time. Would be so nice to see them up and running again after so many years! I'll then work on knocking together a basic UK game so the structure is all there, and then figure out how to make it available for people who want to contribute.
  10. @johnparker007Yeah we need to do something to let people code games etc. I think the EPOCH stuff is the easiest to use and everyone involved in that tech won't care anymore. Won't touch any BFG code as that'll still be copyright, but Maygay don't exist anymore and whoever inherited their IP won't even know it or have record of it. I had it compiling on Windows 10 but something in Win 11 broke it all, and I can't get it to build. IIRC you're Sheffield area (?), as am I. We could do a bit of a hackathon to get this building and compiling some ROMs on a Win 10 PC, with a demo game to get people up and running? It's all pretty basic C code, and I wrote a sub-language for doing attract modes etc so even if you can't code, you can knock up attracts easily enough (that's how I learned at the University of Mazooma ). I only have Hungarian games on EPOCH but to convert to GBP is easy, but the hold/nudge logic isn't there, but is easy enough to code. Just don't expect test routines etc unless you want to code them! Let me know what you think. Ed
  11. Oh yes - of course - I think Global did some rebuild on Proconn around the same era.
  12. Phoenix is Czech/Slovak Dr Jackpot (Project IIRC?) - Italian Road Runner - Czech/Slovak Andy Capp clone - Czech ("BANKA" is the giveaway) All good games, the Czech ones you had to "influence" the Czech gaming commission a box/6 bottles of expensive whiskey to get them to approve your game. Those were the days....
  13. It was a clone of blue rinse - think it was done for arcade/bingo mainly.
  14. He is I joined Mazooma in 1998 when games like Take the Piste, Grab A Granny and Blue Rinse were just launched. They were all dump-a-lump machines, and though sales were OK for some of those early machines, there were (in my opinion) two major milestones in Mazooma going from a BWB-alike company (who also made very lumpy games, go figure) to being a mainstream AWP brand. Firstly was the recruitment of an ex-Ace, ex-JPM and ex-Maygay developer named Alistair Harris. In my opinion he's one of the best ever AWP developers and had a really good feel for how an AWP should play. He did a fair few machines, all of which were pretty successful, e.g. Cash Connection, Money to Money, Cashanova. I worked with him later on at Global where he did the Beaver series and a bunch of other very successful games. Nice bloke - now at Novomatic, I think. Secondly was Pacman Plus; this was a massive seller (2000+ machines) and really set the tone for the next few years. As you may remember, it gave regular features and though it often killed you off, you were soon back in and could take some OK wins from it. A softer game along the lines of Barcrest machines at the time. Very much a pub machine and the sales reflected it. The stake/prize ratio worked well back then. I think - and I may be wrong - but Pacman Plus was the basis for many games far beyond my time. My only claim to fame is writing the game spec for it - I did no programming on it at all.
  15. Hi Everyone Sorry for my long absence. I've got a lot going on at work, and I've also got some health issues which means I'll be in hospital in January. So not much time for anything at the moment. Please bear with me! Hope everyone is OK :) Ed
  16. We never cared about, and never coded for, collecting in red boards. You don't need to. The compensator will just have a high value and the logic will do its job next time around. Read my thread about how compensators worked for more info. Some games, mainly lo-techs, would shovel money around to create streaks or maybe carve a bit of money out of the main compensator to fund smaller mini streaks (see Golden Oldie for that) but hi-tech AWPs, certainly from Mazooma and BFG, would never bother. At some point, someone will collect the money and all will be well. If they don't, the compensator can hold a maximum 2147483647 pence so you'd need to play a long long time for it to overflow....
  17. Hi Guys Sorry for the slow reply - things have been very crazy here the last few months. I'll do some work and give an update soon Thanks Ed
  18. Thanks all - we're better now though I've still got a few lingering issues. Hopefully back to normal soon
  19. Hi Everyone Bit of an update - after avoiding covid for 2 years, both myself and my wife finally got it and haven't been very well. So life in general hasn't been great recently. I'll make some progress on this stuff and share with you when I can. Cheers Ed
  20. In a new game, yes this is easy - for existing games, I'm afraid it is what it is!
  21. Sadly not - they were all written in assembler, Scorp 4 games are in C. Sorry!
  22. Hi everyone - I am sorry for the lack of communication. I've been crazy busy at work the last few weeks but things are slowly getting better. You can expect some progress on this soon Best Wishes Ed
  23. Yeah, I just wish I had more free time! A full time job (and then some!) plus a wife keeps me very busy. But yes we have some opportunities!
  24. Correct I managed to get my old Scorp4 dev system working - was quite a job!
×
×
  • Create New...