Berzerk new robot taunts

This forum is for posting M.A.M.E. arcade cheats. Requests will be fulfilled here....but please keep the requests to the requests forum.
Post Reply
scott_tunstall
Posts: 14
Joined: Sun Feb 28, 2016 5:24 pm

Berzerk new robot taunts

Post by scott_tunstall »

I've been reverse engineering Berzerk (http://seanriddle.com/berzerk.asm) and managed to work out how speech is generated.

As a result, I've created some new taunts for the robots - 14 of them, to be precise. I think they make the game more fun.

This will patch the COLOUR TEST code from $0200 onwards with new code to handle speech.

Apologies that all the instructions are byte-sized, not qword-sized which would have shrunk the size of the cheat considerably, but this is the best I could do with the time I had.

Code: Select all


<!-- New taunts by Scott Tunstall, Paisley, Scotland -->
<cheat desc="New robot taunts">
    <script state="run">
      <action>maincpu.mb@0200=C9</action>

      <action>maincpu.mb@0201=CD</action>
      <action>maincpu.mb@0202=78</action>
      <action>maincpu.mb@0203=26</action>

      <action>maincpu.mb@0204=E6</action>
      <action>maincpu.mb@0205=1F</action>

      <action>maincpu.mb@0206=F6</action>
      <action>maincpu.mb@0207=60</action>

      <action>maincpu.mb@0208=77</action>

      <action>maincpu.mb@0209=23</action>

      <action>maincpu.mb@020A=CD</action>
      <action>maincpu.mb@020B=78</action>
      <action>maincpu.mb@020C=26</action>

      <action>maincpu.mb@020D=E6</action>
      <action>maincpu.mb@020E=1F</action>

      <action>maincpu.mb@020F=FE</action>
      <action>maincpu.mb@0210=07</action>

      <action>maincpu.mb@0211=DA</action>
      <action>maincpu.mb@0212=B8</action>
      <action>maincpu.mb@0213=2B</action>

      <action>maincpu.mb@0214=EB</action>

      <action>maincpu.mb@0215=21</action>
      <action>maincpu.mb@0216=20</action>
      <action>maincpu.mb@0217=02</action>

      <action>maincpu.mb@0218=06</action>
      <action>maincpu.mb@0219=0E</action>

      <action>maincpu.mb@021A=CD</action>
      <action>maincpu.mb@021B=6B</action>
      <action>maincpu.mb@021C=2B</action>

      <action>maincpu.mb@021D=C3</action>
      <action>maincpu.mb@021E=D2</action>
      <action>maincpu.mb@021F=2B</action>

      <action>maincpu.mb@0220=13</action>
      <action>maincpu.mb@0221=94</action>

      <action>maincpu.mb@0222=18</action>
      <action>maincpu.mb@0223=89</action>

      <action>maincpu.mb@0224=18</action>
      <action>maincpu.mb@0225=88</action>

      <action>maincpu.mb@0226=12</action>
      <action>maincpu.mb@0227=89</action>

      <action>maincpu.mb@0228=0E</action>
      <action>maincpu.mb@0229=07</action>
      <action>maincpu.mb@022A=0A</action>
      <action>maincpu.mb@022B=98</action>

      <action>maincpu.mb@022C=0A</action>
      <action>maincpu.mb@022D=0F</action>
      <action>maincpu.mb@022E=07</action>
      <action>maincpu.mb@022F=1B</action>
      <action>maincpu.mb@0230=98</action>

      <action>maincpu.mb@0231=0A</action>
      <action>maincpu.mb@0232=12</action>
      <action>maincpu.mb@0233=07</action>
      <action>maincpu.mb@0234=1B</action>
      <action>maincpu.mb@0235=98</action>

      <action>maincpu.mb@0236=1B</action>
      <action>maincpu.mb@0237=1C</action>
      <action>maincpu.mb@0238=07</action>
      <action>maincpu.mb@0239=17</action>
      <action>maincpu.mb@023A=1B</action>
      <action>maincpu.mb@023B=98</action>

      <action>maincpu.mb@023C=1B</action>
      <action>maincpu.mb@023D=1C</action>
      <action>maincpu.mb@023E=16</action>
      <action>maincpu.mb@023F=01</action>
      <action>maincpu.mb@0240=0A</action>
      <action>maincpu.mb@0241=92</action>

      <action>maincpu.mb@0242=1B</action>
      <action>maincpu.mb@0243=1C</action>
      <action>maincpu.mb@0244=16</action>
      <action>maincpu.mb@0245=01</action>
      <action>maincpu.mb@0246=0A</action>
      <action>maincpu.mb@0247=8F</action>

      <action>maincpu.mb@0248=1B</action>
      <action>maincpu.mb@0249=1C</action>
      <action>maincpu.mb@024A=16</action>
      <action>maincpu.mb@024B=15</action>
      <action>maincpu.mb@024C=0A</action>
      <action>maincpu.mb@024D=92</action>

      <action>maincpu.mb@024E=1B</action>
      <action>maincpu.mb@024F=1C</action>
      <action>maincpu.mb@0250=16</action>
      <action>maincpu.mb@0251=15</action>
      <action>maincpu.mb@0252=0A</action>
      <action>maincpu.mb@0253=8F</action>

      <action>maincpu.mb@0254=0A</action>
      <action>maincpu.mb@0255=18</action>
      <action>maincpu.mb@0256=16</action>
      <action>maincpu.mb@0257=17</action>
      <action>maincpu.mb@0258=94</action>

      <action>maincpu.mb@0259=0A</action>
      <action>maincpu.mb@025A=12</action>
      <action>maincpu.mb@025B=19</action>
      <action>maincpu.mb@025C=1A</action>
      <action>maincpu.mb@025D=1B</action>
      <action>maincpu.mb@025E=98</action>


      <action>maincpu.mb@2baf=C3</action>
      <action>maincpu.mw@2bb0=0201</action>
scott_tunstall
Posts: 14
Joined: Sun Feb 28, 2016 5:24 pm

Re: Berzerk new robot taunts

Post by scott_tunstall »

Here's the Z80 source for the cheat, if you want to add your own taunts. You can paste this direct into a Z80 project on ASM80 online to build. and produce the hex opcodes to make the cheat. The EQUs below are the unique IDs of the words that Berzerk supports.

If you create derivative works from this, a wee credit to me would be nice :wink:

Code: Select all

ORG $0200

; Take away leading X from label to get word spoken
XKILL:                        EQU $01
XATTACK:                      EQU $02
XCHARGE:                     EQU $03
XGOT:                         EQU $04
XSHOOT:                       EQU $05
XGET:                         EQU $06
XIS:                          EQU $07
XALERT:                       EQU $08
XDETECTED:                    EQU $09
XTHE:                        EQU $0A
XIN:                          EQU $0B
XIT:                          EQU $0C
XTHERE:                       EQU $0D
XWHERE:                       EQU $0E
XHUMANOID:                    EQU $0F
XCOINS:                       EQU $10
XPOCKET:                      EQU $11
XINTRUDER:                    EQU $12 
XNO:                          EQU $13
XESCAPE:                      EQU $14
XDESTROY:                     EQU $15
XMUST:                        EQU $16
XNOT:                         EQU $17
XCHICKEN:                     EQU $18 
XFIGHT:                       EQU $19 
XLIKE:                        EQU $1A
XA:                           EQU $1B
XROBOT:                       EQU $1C


org $2baf
jp $201

org $0200
ret

org $0201
call $2678 
and  $1F
or   $60
ld   (hl),a
inc  hl    
call $2678
and  $1F
cp   $07
jp c, $2bb8

ex   de,hl 
ld hl, TAUNTS
ld b, 14
call $2B6B
jp $2BD2


; Here are the new taunts.
; NO ESCAPE
; CHICKEN DETECTED
; CHICKEN ALERT
; etc...
; Bit 7 set in a byte indicates this word ends the sentence

TAUNTS:
DB XNO, XESCAPE | $80
DB XCHICKEN, XDETECTED | $80
DB XCHICKEN, XALERT | $80
DB XINTRUDER, XDETECTED | $80
DB XWHERE, XIS, XTHE, XCHICKEN | $80
DB XTHE, XHUMANOID, XIS, XA, XCHICKEN | $80
DB XTHE, XINTRUDER, XIS, XA, XCHICKEN | $80
DB XA, XROBOT, XIS,XNOT,XA,XCHICKEN | $80
DB XA, XROBOT, XMUST, XKILL, XTHE, XINTRUDER | $80
DB XA, XROBOT, XMUST, XKILL, XTHE, XHUMANOID | $80
DB XA, XROBOT, XMUST, XDESTROY, XTHE, XINTRUDER | $80
DB XA, XROBOT, XMUST, XDESTROY, XTHE, XHUMANOID | $80
DB XTHE, XCHICKEN, XMUST, XNOT, XESCAPE | $80
DB XTHE, XINTRUDER, XFIGHT, XLIKE, XA, XCHICKEN | $80
User avatar
Pugsy
Posts: 3638
Joined: Fri Aug 17, 2001 12:59 am
Location: North Wales, UK.
Has thanked: 1 time
Been thanked: 12 times
Contact:

Re: Berzerk new robot taunts

Post by Pugsy »

Thanks, q-worded and made it into a standard format cheat. Quickly duped for the 5 clones, though I don't know what the french, german & spanish versions will be saying.

Duplicated using the following debugger find commands:-

;0200 = f 0,ffff,1,48,10,ed,78
;2baf = f 0,ffff,cd,?,?,e6,1f,f6,60

Code: Select all

  <cheat desc="New robot taunts" tempvariables="14"> <!-- New taunts by Scott Tunstall, Paisley, Scotland -->
    <script state="on">
      <action>maincpu.mq@0200=temp0, maincpu.mq@0208=temp1, maincpu.mq@0210=temp2, maincpu.mq@0218=temp3</action>
      <action>maincpu.mq@0220=temp4, maincpu.mq@0228=temp5, maincpu.mq@0230=temp6, maincpu.mq@0238=temp7</action>
      <action>maincpu.mq@0240=temp8, maincpu.mq@0248=temp9, maincpu.mq@0250=temp10, maincpu.mq@0258=temp11</action>
      <action>maincpu.mb@2BAF=temp12, maincpu.mw@2BB0=temp13</action>
    </script>
    <script state="run">
      <action>maincpu.mq@0200=60F61FE62678CDC9, maincpu.mq@0208=FE1FE62678CD2377, maincpu.mq@0210=022021EB2BB8DA07, maincpu.mq@0218=2BD2C32B6BCD0E06</action>
      <action>maincpu.mq@0220=8912881889189413, maincpu.mq@0228=1B070F0A980A070E, maincpu.mq@0230=1C1B981B07120A98, maincpu.mq@0238=01161C1B981B1707</action>
      <action>maincpu.mq@0240=8F0A01161C1B920A, maincpu.mq@0248=1C1B920A15161C1B, maincpu.mq@0250=1716180A8F0A1516, maincpu.mq@0258=19981B1A19120A94</action>
      <action>maincpu.mb@2BAF=C3, maincpu.mw@2BB0=0201</action>
    </script>
    <script state="off">
      <action>temp0 =maincpu.mq@0200, temp1 =maincpu.mq@0208, temp2 =maincpu.mq@0210, temp3 =maincpu.mq@0218</action>
      <action>temp4 =maincpu.mq@0220, temp5 =maincpu.mq@0228, temp6 =maincpu.mq@0230, temp7 =maincpu.mq@0238</action>
      <action>temp8 =maincpu.mq@0240, temp9 =maincpu.mq@0248, temp10=maincpu.mq@0250, temp11=maincpu.mq@0258</action>
      <action>temp12=maincpu.mb@2BAF, temp13=maincpu.mw@2BB0</action>
    </script>
  </cheat>
Pugsy

Servicing your cheating needs since 1985 8)

Grab the latest cheat collection:
MAME 0.259 XML cheat collection (6 OCTOBER 2023) from http://www.mamecheat.co.uk or direct from:-
https://mega.nz/file/q4dHGZ6K#i-EUiqIjH ... KMz7hnbTfw (ZIP Archive 3.76MB)
Post Reply