home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-12-21 | 25.3 KB | 1,285 lines |
- ***********************************************
- * *
- * (C)opyright 1991-92 *
- * *
- * by Tomi Blinnikka *
- * *
- * SimCity 1.1 Cheat *
- * *
- * Version 0.00a - 0.99a 18/4/1991 *
- * *
- * BUGS: Didn't work through DOS *
- * *
- * Version 1.00 19/4/1991 *
- * *
- * BUGS: No WB Stuff + some font stuff *
- * *
- * Version 1.01 26-27/4/1991 *
- * *
- * BUGS: No font stuff + WB Stuff didn't work *
- * from directories *
- * *
- * Version 1.02 27-29/4/1991 *
- * *
- * BUGS: Doesn't work with CShell *
- * *
- * Version 1.03 30/4/1991 *
- * *
- * BUGS: Still little problems with CShell *
- * *
- * Version 1.04 01/5/1991 *
- * *
- * BUGS: Unknown *
- * *
- * Version 1.05 02/5/1991 *
- * *
- * BUGS: Unknown *
- * *
- * Version 1.06 18/5/1991 *
- * *
- * BUGS: No PoC DOS support *
- * No PoC 2,3,4 player support *
- * *
- * Version 1.07 27/5/1991 *
- * *
- * BUGS: No PoC/OilImp/Oil Imperium DOS sup- *
- * port *
- * No PoC 2, 3, 4 player support *
- * *
- ***********************************************
-
- INCLUDE "JMPLibs.i"
- INCLUDE "exec/types.i"
- INCLUDE "libraries/dos.i"
- INCLUDE "libraries/reqbase.i"
- INCLUDE "workbench/startup.i"
- INCLUDE "intuition/intuition.i"
-
- INCLUDE "XREF:dos.xref"
- INCLUDE "XREF:intuition.xref"
- INCLUDE "XREF:exec.xref"
- INCLUDE "XREF:gfx.xref"
-
- INCLUDE "LWF:SimCC/SimCC2.0.i"
-
- DReq: set 1
-
- XREF Help
- XREF HWin1
-
- XDEF _IntuitionBase
- XDEF _GfxBase
- XDEF MenusOff
- XDEF MenusOn
- XDEF Kick
- XDEF YOffset
- XDEF Topaz
- XDEF NoWin
- XDEF CheckIDCMP
- XDEF ClearMSGs
- XDEF Window1IDCMP
- XDEF wd_RPort
-
- section SimCityCheat,CODE
-
- Start: move.l a0,SCCAddress ;Get SimCity filename
- move.l d0,SCCLength ;Get length
-
- move.l #0,a1
- lib Exec,FindTask
- move.l d0,SCCTask
- move.l d0,a4
-
- move.l pr_CLI(a4),d0
- bne Start1
- bsr WBStart
-
- Start1: openlib Dos,ShutDown
-
- lib Dos,Output
- move.l d0,_stdout
-
- move.l pr_CLI(a4),d0
- beq WBInput
-
- ;CLI Inputs
-
- move.l SCCAddress(pc),a0
- move.l SCCLength(pc),d0
- clr.b -1(a0,d0.l) ;add null to end of filename
-
- cmp.b #160,(a0)
- beq StartMain
- cmp.b #$0a,(a0)
- beq StartMain
- cmp.b #$0d,(a0)
- beq StartMain
- tst.b (a0)
- bne GotFileName
- jmp StartMain
-
- WBStart: lea.l pr_MsgPort(a4),a0
- lib Exec,WaitPort
- lea.l pr_MsgPort(a4),a0
- flib Exec,GetMsg
- move.l d0,WBMsg
- WBStart1: rts
-
- GotFileName: move.w #1,Mode
- cmp.b #"?",(a0)
- beq CommandLineHelp
- lea.l FRFile(pc),a1
- bsr CopyText
- tst.l d0
- bne ShutDown
- lea.l FRFile(pc),a0
- move.l a0,d1
- move.l #MODE_OLDFILE,d2
- lib Dos,Open
- move.l d0,SCCFile
- bne DOSCheat
- bsr SCCNotOpen
- bra ShutDown
-
- ;Copies filename from one place to another
- ;Handles CShell and quotes
- ;
- ;INPUTS
- ;------
- ;a0 = Source
- ;a1 = Destination
- ;
- ;RETURNS
- ;-------
- ;d0 = #$00 if everything OK
- ;d0 = #$ff if need to goto ShutDown
- ;
- ;DEFAULTS
- ;--------
- ;a0 = SCCAddress from DOS
- ;a1 = FRFile from DOS
- ;
-
- CopyText: cmp.b #'"',(a0)
- beq Quotes
- CopyTText: move.b (a0)+,(a1)+
- cmp.b #'"',(a0)
- beq Quotes
- cmp.b #$20,(a0)
- beq CopyTText1
- cmp.b #160,(a0)
- beq CopyTText1
- cmp.b #$0a,(a0)
- beq CopyTText1
- cmp.b #$0d,(a0)
- beq CopyTText1
- cmp.b #$00,(a0)
- bne CopyTText
- CopyTText1: clr.b (a1)
- clr.l d0
- rts
- Quotes: add.l #1,a0
- Quotes1: move.b (a0)+,(a1)+
- cmp.b #$00,(a0)
- beq MismatchQuotes
- cmp.b #160,(a0)
- beq MismatchQuotes
- cmp.b #$0a,(a0)
- beq MismatchQuotes
- cmp.b #$0d,(a0)
- beq MismatchQuotes
- cmp.b #'"',(a0)
- bne Quotes1
- Quotes2: clr.b (a1)
- clr.l d0
- rts
- MismatchQuotes: print <"***Break",13,10,"Mismatched quotes",13,10>
- move.l #$ff,d0
- rts
-
- ;WB Inputs, start with opening NIL:
-
- WBInput: lea.l NILName(pc),a0
- move.l a0,d1
- move.l #MODE_NEWFILE,d2
- lib Dos,Open
- move.l d0,NILFile
- beq ShutDown
- move.l NILFile(pc),_stdout
-
- move.l #$00,d1
- flib Dos,CurrentDir
- move.l d0,OldLock
- move.l WBMsg(pc),a2
- move.l sm_NumArgs(a2),ArgsLeft
- move.l sm_ArgList(a2),ArgList
-
- WBInputIn: sub.l #1,ArgsLeft
- add.l #8,ArgList
- cmp.l #$00,ArgsLeft
- beq WBInputOut
-
- WBInput1: move.l ArgList(pc),a0
- move.l wa_Name(a0),d1
- move.l d1,a1
- tst.b (a1)
- bne WBInput2
- WBInput1.1: move.l ArgList(pc),a0
- move.l wa_Lock(a0),d1
- beq WBInputIn
- lib Dos,CurrentDir
- move.l #$00,FRDir
- bra WBInputIn
-
- WBInput2: move.l d1,a0
- lea.l FRFile(pc),a1
- WBInput2.1: move.b (a0)+,(a1)+
- cmp.b #$00,(a0)
- bne WBInput2.1
- clr.b (a1)
- bra WBInput1.1
-
- WBInputOut: move.l FRDir(pc),a0
- lea.l FRPathName(pc),a1
- cmp.b #$00,(a0)
- beq WBInputOut1.1
- WBInputOut1: move.b (a0)+,(a1)+
- cmp.b #$00,(a0)
- bne WBInputOut1
- WBInputOut1.1: lea.l FRFile(pc),a0
- WBInputOut2: move.b (a0)+,(a1)+
- cmp.b #$00,(a0)
- bne WBInputOut2
- clr.b (a1)
-
- StartMain: move.w #0,Mode
- moveq.l #2,d0
-
- move.l #2,d0
- move.l $4,a6
- lea.l _ReqLib,a1
- jsr _LVOOpenLibrary(a6)
- move.l d0,_ReqBase
- beq NoReq
- openlib Intuition,NoInt
- openlib Gfx,NoGfx
-
- ;test for 2.0
-
- move.l _IntuitionBase(pc),a6
- move.w $14(a6),d0
- cmp.w #36,d0
- bcs StartWin1
-
- ;under 2.0
- move.w #$01,Kick
- move.l #$00,a0
- flib Intuition,LockPubScreen
- move.l d0,PubScreen
- beq NoPub
-
- ;Get DragBar size
-
- move.w #40,Win1YSize
- move.l d0,a0
- move.b $1e(a0),d0
- add.b #1,d0
- move.w #$00,Win1ZoomY
- move.b d0,Win1ZoomY+1
- add.b d0,Gad1YPos+1
- move.b d0,YOffset
-
- ;use new OpenWindow (OpenWindowTagList)
-
- lea.l NewWindow1(pc),a0
- lea.l Win1TagList(pc),a1
- flib Intuition,OpenWindowTagList
- move.l d0,Window1
- beq NoWin
- move.l #$00,a0
- move.l PubScreen(pc),a1
- flib Intuition,UnlockPubScreen
- move.l #$00,PubScreen
- bra AddMenu1
-
- ;under 1.3
-
- StartWin1: move.w #$00,Kick
- add.w #10,Gad1YPos
- lea.l NewWindow1(pc),a0
- lib Intuition,OpenWindow
- move.l d0,Window1
- beq NoWin
-
- ;Add Menus to Window1
-
- AddMenu1: move.l Window1(pc),a0
- move.l wd_RPort(a0),Win1RP
- lea.l Menu1(pc),a1
- flib Intuition,SetMenuStrip
-
- ;Add gadget
-
- lea.l AmountGad1(pc),a1
- move.l Window1(pc),a0
- move.l #$00,d0
- flib Intuition,AddGadget
-
- ;Refresh gad list
-
- lea.l AmountGad1(pc),a0
- move.l Window1(pc),a1
- move.l #$00,a2
- flib Intuition,RefreshGadgets
-
- ;Activate string gad
-
- lea.l AmountGad1(pc),a0
- move.l Window1(pc),a1
- move.l #$00,a2
- flib Intuition,ActivateGadget
-
- Window1IDCMP: move.l Window1(pc),a0
- bsr CheckIDCMP
- cmp.l #CLOSEWINDOW,d2
- beq ShutDown
- cmp.l #VANILLAKEY,d2
- beq VanillaKeys
- cmp.l #RAWKEY,d2
- beq RawKeys
- cmp.l #MENUPICK,d2
- beq Win1Menus
- cmp.l #MOUSEBUTTONS,d2
- beq ActivateGad
- bra Window1IDCMP
-
- VanillaKeys: cmp.w #$1b,d3
- beq ShutDown
- cmp.w #"q",d3
- beq ShutDown
- cmp.w #"Q",d3
- beq ShutDown
- bra Window1IDCMP
- RawKeys: cmp.w #$5f,d3
- beq Help
- bra Window1IDCMP
-
- ActivateGad: cmp.l #IECODE_LBUTTON,d3
- bne ActivateGadOut
- ActivateGad1: lea.l AmountGad1(pc),a0
- move.l Window1(pc),a1
- move.l #$00,a2
- lib Intuition,ActivateGadget
- ActivateGadOut: bra Window1IDCMP
-
- Win1Menus: bsr MenuNull
- cmp.l #$00,d6
- beq DoMenu1
- cmp.l #$01,d6
- beq DoMenu2
- bra Window1IDCMP
- DoMenu1: cmp.l #$00,d5
- beq GetN
- cmp.l #$01,d5
- beq Help
- cmp.l #$02,d5
- beq About
- cmp.l #$03,d5
- beq ShutDown
- bra Window1IDCMP
- DoMenu2: cmp.l #$00,d5
- beq DM2.1
- bra Window1IDCMP
- DM2.1: cmp.l #$00,d4
- beq DM2.1.1
- cmp.l #$01,d4
- beq DM2.1.2
- cmp.l #$02,d4
- beq DM2.1.3
- cmp.l #$03,d4
- beq DM2.1.4
- cmp.l #$04,d4
- beq DM2.1.5
- cmp.l #$05,d4
- beq DM2.1.6
- cmp.l #$06,d4
- beq DM2.1.7
- cmp.l #$07,d4
- beq DM2.1.8
- cmp.l #$08,d4
- beq DM2.1.9
- cmp.l #$09,d4
- beq DM2.1.10
- bra Window1IDCMP
- DM2.1.1: move.w #$00,Game
- bra SimAmount1
- DM2.1.2: move.w #$01,Game
- bra PoCAmount1
- DM2.1.3: move.w #$02,Game
- bra PoCAmount1
- DM2.1.4: move.w #$03,Game
- bra PoCAmount1
- DM2.1.5: move.w #$04,Game
- bra PoCAmount1
- DM2.1.6: move.w #$05,Game
- bra OilAmount1
- DM2.1.7: move.w #$06,Game
- bra OilAmount1
- DM2.1.8: move.w #$07,Game
- bra OilAmount1
- DM2.1.9: move.w #$08,Game
- bra OilAmount1
- DM2.1.10: move.w #$09,Game
- bra RRTAmount1
-
- GetN: cmp.w #$00,Game
- beq SimCheckAmount ;SimCity
- cmp.w #$01,Game
- beq PoCCheckAmount ;Ports of Call
- cmp.w #$02,Game
- beq PoCCheckAmount
- cmp.w #$03,Game
- beq PoCCheckAmount
- cmp.w #$04,Game
- beq PoCCheckAmount
- cmp.w #$05,Game
- beq OilCheckAmount ;Oil Imperium
- cmp.w #$06,Game
- beq OilCheckAmount
- cmp.w #$07,Game
- beq OilCheckAmount
- cmp.w #$08,Game
- beq OilCheckAmount
- cmp.w #$09,Game
- beq RRTCheckAmount ;RailRoad Tycoon
- bra Window1IDCMP
-
- SimCheckAmount: lea.l GetSimName(pc),a5
- cmp.l #16777216,AmountInt
- bcs GetN0.1
- move.l Window1(pc),a0
- move.l $2e(a0),a0
- lib Intuition,DisplayBeep
- SimAmount1: move.l Window1(pc),a0
- lea.l WindowTitle1(pc),a1
- move.l #-1,a2
- lib Intuition,SetWindowTitles
- move.l Window1(pc),a0
- lea.l AmountGad1(pc),a1
- lib Intuition,RemoveGadget
- move.l #$31363737,AmountBuf
- move.l #$37323135,AmountBuf+4
- move.w #$0000,AmountBuf+8
- move.l #16777215,AmountInt
- bsr RefreshGad
- tst.l WBMsg
- bne SimAmount2
- lea.l SimDiskName(pc),a0
- lea.l FRDir(pc),a1
- bsr CopyText
- lea.l SimDiskName(pc),a0
- lea.l FRPathName(pc),a1
- bsr CopyText
- SimAmount2: bra ActivateGad1
-
- PoCCheckAmount: lea.l GetPoCName(pc),a5
- cmp.l #$7fffff00,AmountInt
- bcs GetN0.1
- move.l Window1(pc),a0
- move.l $2e(a0),a0
- lib Intuition,DisplayBeep
- PoCAmount1: move.l Window1(pc),a0
- lea.l WindowTitle2(pc),a1
- move.l #-1,a2
- lib Intuition,SetWindowTitles
- move.l Window1(pc),a0
- lea.l AmountGad1(pc),a1
- flib Intuition,RemoveGadget
- move.l #$32313437,AmountBuf
- move.l #$34383333,AmountBuf+4
- move.w #$3931,AmountBuf+8
- move.l #$7ffffeff,AmountInt
- bsr RefreshGad
- tst.l WBMsg
- bne PoCAmount2
- lea.l PoCDiskName(pc),a0
- lea.l FRDir(pc),a1
- bsr CopyText
- lea.l PoCDiskName(pc),a0
- lea.l FRPathName(pc),a1
- bsr CopyText
- PoCAmount2: bra ActivateGad1
-
- OilCheckAmount: lea.l GetOilName(pc),a5
- cmp.l #2147483648,AmountInt
- bcs GetN0.1
- move.l Window1(pc),a0
- move.l $2e(a0),a0
- lib Intuition,DisplayBeep
- OilAmount1: move.l Window1(pc),a0
- lea.l WindowTitle3(pc),a1
- move.l #-1,a2
- lib Intuition,SetWindowTitles
- move.l Window1(pc),a0
- lea.l AmountGad1(pc),a1
- flib Intuition,RemoveGadget
- move.l #$32313437,AmountBuf
- move.l #$34383336,AmountBuf+4
- move.w #$3437,AmountBuf+8
- move.l #$7fffffff,AmountInt
- bsr RefreshGad
- tst.l WBMsg
- bne OilAmount2
- lea.l OilDiskName(pc),a0
- lea.l FRDir(pc),a1
- bsr CopyText
- lea.l OilDiskName(pc),a0
- lea.l FRPathName(pc),a1
- bsr CopyText
- OilAmount2: bra ActivateGad1
-
- RRTCheckAmount: lea.l GetRRTName(pc),a5
- cmp.l #32768,AmountInt ;Max Amount+1
- bcs GetN0.1
- cmp.b #$2d,AmountBuf ;Check for negative number
- bne RRTAmount0.1
- cmp.l #$FFFF8001,AmountInt
- bcc GetN0.1
- RRTAmount0.1: move.l Window1(pc),a0
- move.l $2e(a0),a0
- lib Intuition,DisplayBeep
- RRTAmount1: move.l Window1(pc),a0
- lea.l WindowTitle4(pc),a1
- move.l #-1,a2
- lib Intuition,SetWindowTitles
- move.l Window1(pc),a0
- lea.l AmountGad1(pc),a1
- flib Intuition,RemoveGadget
- move.l #$33323736,AmountBuf
- move.w #$3700,AmountBuf+4
- move.l #$7fff,AmountInt
- bsr RefreshGad
- tst.l WBMsg
- bne OilAmount2
- lea.l RRTDiskName(pc),a0
- lea.l FRDir(pc),a1
- bsr CopyText
- lea.l RRTDiskName(pc),a0
- lea.l FRPathName(pc),a1
- bsr CopyText
- RRTAmount2: bra ActivateGad1
-
- GetN0.1: bsr MenusOff
- move.l #FRQABSOLUTEXYM+FRQLOADINGM,d5
- bsr FileRequester
- tst.l d0
- beq GetNOut
-
- lea.l FRPathName(pc),a1
- move.l a1,d1
- cmp.b #$00,(a1)
- beq GetNOut
- move.l #MODE_OLDFILE,d2
- lib Dos,Open
- move.l d0,SCCFile
- bne GetN1
- bsr FileError
- bra GetNOut
-
- GetN1: bsr MenusOff
- move.l Window1(pc),a0
- lea.l Cheat?Txt(pc),a1
- lea.l OKTxt(pc),a2
- lea.l CancelTxt(pc),a3
- move.l #$00,d0
- move.l #$00,d1
- move.l #$100,d2
- move.l #$40,d3
- lib Intuition,AutoRequest
- cmp.l #00,d0
- beq GetN1.1
- bsr TestFile
- GetN1.1: bsr MenusOn
-
- GetN2: move.l SCCFile(pc),d1
- lib Dos,Close
- move.l #$00,SCCFile
-
- GetNOut: bsr MenusOn
- bra Window1IDCMP
-
- RefreshGad: move.l Win1RP(pc),a1 ;clear page
- move.l #$00,d0
- move.l _GfxBase,a6
- jsr _LVOSetAPen(a6)
- move.l Win1RP(pc),a1
- move.l #$05,d0
- move.l #$0b,d1
- add.b YOffset(pc),d1
- move.l #298,d2
- move.l #30,d3
- add.b YOffset,d3
- jsr _LVORectFill(a6)
- cmp.w #$9,Game
- bne RefreshGad1
- move.l Win1RP(pc),a0
- lea.l RRTSpecialTxt(pc),a1
- move.l #$00,d0
- move.l #$00,d1
- move.b YOffset(pc),d1
- lib Intuition,PrintIText
- RefreshGad1: move.l Window1(pc),a0
- lea.l AmountGad1(pc),a1
- move.l #$00,d0
- lib Intuition,AddGadget
- lea.l AmountGad1(pc),a0
- move.l Window1(pc),a1
- move.l #$00,a2
- flib Intuition,RefreshGadgets
- rts
-
- FileRequester: move.l a5,FRTitle
- move.l d5,FRFlags
- lea.l FileRequest1(pc),a0
- lib Req,FileRequester
- FROut: rts
-
- About: bsr MenusOff
- move.l Window1(pc),a0
- lea.l AboutTxt1(pc),a1
- move.l #$00,a2 ;positive text
- lea.l OKTxt(pc),a3 ;a bit the wrong way around but...
- move.l #$00,d0
- move.l #$00,d1
- move.l #$134,d2
- move.l #$50,d3
- lib Intuition,AutoRequest
- bsr MenusOn
- bra Window1IDCMP
-
- Finished: move.l Window1(pc),a0
- lea.l FinitoTxt1(pc),a1
- move.l #$00,a2 ;positive text
- lea.l OKTxt(pc),a3 ;a bit the wrong way around but...
- move.l #$00,d0
- move.l #$00,d1
- move.l #$90,d2
- move.l #$40,d3
- lib Intuition,AutoRequest
- rts
-
- TestFile: cmp.w #$00,Game
- beq TestForCity
- cmp.w #$01,Game
- beq TestForPoC
- cmp.w #$02,Game
- beq TestForPoC
- cmp.w #$03,Game
- beq TestForPoC
- cmp.w #$04,Game
- beq TestForPoC
- cmp.w #$05,Game
- beq TestForOil
- cmp.w #$06,Game
- beq TestForOil
- cmp.w #$07,Game
- beq TestForOil
- cmp.w #$08,Game
- beq TestForOil
- cmp.w #$09,Game
- beq TestForRRT
- rts
- TestForCity: move.l SCCFile(pc),d1
- move.l #65,d2
- move.l #-1,d3
- lib Dos,Seek
- move.l SCCFile(pc),d1
- lea.l FileBuf(pc),a0
- move.l a0,d2
- move.l #$04,d3
- flib Dos,Read
- tst.l d0
- bne TestForCity1
- bsr FileError
- rts
- TestForCity1: move.l FileBuf(pc),d0
- cmp.l #$43495459,d0
- bne TestForCity2
- bsr CheatGame
- rts
- TestForCity2: cmp.w #1,Mode
- beq TestForCity3
- move.l Window1(pc),a0
- lea.l WrongTxt1(pc),a1
- lea.l OKTxt(pc),a2
- lea.l CancelTxt(pc),a3
- move.l #$00,d0
- move.l #$00,d1
- move.l #$100,d2
- move.l #$40,d3
- lib Intuition,AutoRequest
- cmp.l #00,d0
- beq Seek_Out
- bsr CheatGame
- rts
- TestForCity3: print <"***Break",13,10,"This is not a SimCity city-file, exiting!",13,10>,_stdout
- Seek_Out: rts
-
- TestForPoC: move.l SCCFile(pc),d1
- move.l #00,d2
- move.l #-1,d3
- lib Dos,Seek
- move.l SCCFile(pc),d1
- lea.l FileBuf(pc),a0
- move.l a0,d2
- move.l #$04,d3
- flib Dos,Read
- tst.l d0
- bne TestForPoC1
- bsr FileError
- rts
- TestForPoC1: move.l FileBuf(pc),d0
- cmp.l #$52444b20,d0
- bne TestForCity2
- bsr CheatGame
- rts
-
- TestForOil: move.l SCCFile(pc),d1
- move.l #00,d2
- move.l #-1,d3
- lib Dos,Seek
- move.l SCCFile(pc),d1
- lea.l FileBuf(pc),a0
- move.l a0,d2
- move.l #$0a,d3
- flib Dos,Read
- tst.l d0
- bne TestForOil1
- bsr FileError
- rts
- TestForOil1: lea.l FileBuf(pc),a0
- cmp.l #"Blac",(a0)
- bne TestForCity2
- cmp.l #$6b20476f,4(a0)
- bne TestForCity2
- cmp.w #"ld",8(a0)
- bne TestForCity2
- bsr CheatGame
- rts
-
- TestForRRT: move.l SCCFile(pc),d1
- move.l #13072,d2
- move.l #-1,d3
- lib Dos,Seek
- move.l SCCFile(pc),d1
- lea.l FileBuf(pc),a0
- move.l a0,d2
- move.l #$04,d3
- flib Dos,Read
- tst.l d0
- bne TestForRRT1
- bsr FileError
- rts
- TestForRRT1: lea.l FileBuf(pc),a0
- cmp.l #$302d342d,(a0)
- bne TestForCity2
- bsr CheatGame
- rts
-
- CheatGame: cmp.w #$00,Game ;Sim
- beq CheatCity
- cmp.w #$01,Game ;PoC
- bne CheatGame1
- move.l #103,d2
- bra CheatPoC
- CheatGame1: cmp.w #$02,Game
- bne CheatGame2
- move.l #103,d2
- bra CheatPoC
- CheatGame2: cmp.w #$03,Game
- bne CheatGame3
- move.l #103,d2
- bra CheatPoC
- CheatGame3: cmp.w #$04,Game
- bne CheatGame4
- move.l #103,d2
- bra CheatPoC
- CheatGame4: cmp.w #$05,Game ;Oil
- bne CheatGame5
- move.l #7495,d2
- bra CheatOil
- CheatGame5: cmp.w #$06,Game
- bne CheatGame6
- move.l #8545,d2
- bra CheatOil
- CheatGame6: cmp.w #$07,Game
- bne CheatGame7
- move.l #9595,d2
- bra CheatOil
- CheatGame7: cmp.w #$08,Game
- bne CheatGame8
- move.l #10645,d2
- bra CheatOil
- CheatGame8: cmp.w #$09,Game ;RRT
- bne CheatGame9
- move.l #14152,d2
- bra CheatRRT
- CheatGame9: rts
-
-
- CheatCity: move.l SCCFile(pc),d1
- move.l #3108,d2
- move.l #-1,d3
- lib Dos,Seek
- move.l SCCFile(pc),d1
- lea.l AmountInt(pc),a0
- move.l a0,d2
- move.l #$04,d3
- flib Dos,Write
- cmp.w #1,Mode
- bne CheatCity1
- print <"Your city now has $16, 777 215.",13,10>,_stdout
- rts
- CheatCity1: bsr Finished
- rts
-
- CheatPoC: move.l SCCFile(pc),d1
- move.l #-1,d3
- lib Dos,Seek
- move.l SCCFile(pc),d1
- lea.l AmountInt(pc),a0
- move.l a0,d2
- move.l #$04,d3
- flib Dos,Write
- bsr Finished
- rts
-
- CheatOil: move.l SCCFile(pc),d1
- move.l #-1,d3
- lib Dos,Seek
- move.l SCCFile(pc),d1
- lea.l AmountInt(pc),a0
- move.l a0,d2
- move.l #$04,d3
- flib Dos,Write
- bsr Finished
- rts
-
- CheatRRT: move.l SCCFile(pc),d1
- move.l #-1,d3
- lib Dos,Seek
- move.l SCCFile(pc),d1
- move.l AmountInt(pc),d2
- swap d2
- move.l d2,AmountInt
- lea.l AmountInt(pc),a0
- move.l a0,d2
- move.l #$02,d3
- flib Dos,Write
- bsr Finished
- rts
-
- DOSCheat: bsr TestFile
- bra ShutDown
-
- NoReq: print <"You need req.library v2.5 or higher!",13,10>,_stdout
- bra ShutDown
- NoInt: print <"Can't open intuition.library!",13,10>,_stdout
- bra ShutDown
- NoGfx: print <"Can't open graphics.library!",13,10>,_stdout
- bra ShutDown
- NoWin: print <"Can't open Window!",13,10>,_stdout
- bra ShutDown
- NoPub: print <"Can't lock PubScreen!",13,10>,_stdout
- bra ShutDown
-
- ShutDown: tst.l PubScreen
- beq ShutDown9000
- move.l #$00,a0
- move.l PubScreen(pc),a1
- lib Intuition,UnlockPubScreen
- move.l #$00,PubScreen
-
- ShutDown9000: tst.l SCCFile
- beq ShutDown8000
- move.l SCCFile(pc),d1
- lib Dos,Close
- move.l #$00,SCCFile
- ShutDown8000: tst.l NILFile
- beq ShutDown6000
- move.l NILFile(pc),d1
- lib Dos,Close
- move.l #$00,NILFile
- ShutDown6000: tst.l HWin1
- beq ShutDown5000
- move.l HWin1(pc),a0
- bsr ClearMSGs
- move.l #$00,HWin1
- ShutDown5000: tst.l Window1
- beq ShutDown4000
- move.l Window1(pc),a0
- lib Intuition,ClearMenuStrip
- move.l Window1(pc),a0
- bsr ClearMSGs
- move.l #$00,Window1
-
- ShutDown4000:
- ShutDown3000: tst.l _ReqBase
- beq ShutDown2001
- lea.l FileRequest1(pc),a0
- lib Req,PurgeFiles
-
- ;Check if launched from WB
-
- ShutDown2001: move.l SCCTask,a4
- move.l pr_CLI(a4),d0
- beq ShutDownWB
-
- ShutDown2000: closlib Dos
- closlib Req
- closlib Intuition
- closlib Gfx
-
- ShutDownOut: move.l #RETURN_OK,d0
- rts
-
- ShutDownWB: move.l SCCTask(pc),a4 ;WAZ IZ FOR?
- lib Exec,Forbid
- move.l WBMsg(pc),a1
- flib Exec,ReplyMsg
- move.l OldLock(pc),d1
- lib Dos,CurrentDir
- bra ShutDown2000
-
- INCLUDE "LWF:SimCC/DosError.i"
- INCLUDE "LWF:SimCC/SCCCommandLineHelp.i"
-
- MenusOn: lea.l Menu1(pc),a1
- move.l Window1(pc),a0
- lib Intuition,SetMenuStrip
- rts
-
- MenusOff: move.l Window1(pc),a0
- lib Intuition,ClearMenuStrip
- rts
-
- MenuNull: move.l d3,d6
-
- ror.l #5,d6
- lsr.l #8,d6
- lsr.l #8,d6
- lsr.l #8,d6
- lsr.l #3,d6
-
- move.l d3,d5
-
- ror.l #5,d5
- ror.l #6,d5
- lsr.l #8,d5
- lsr.l #8,d5
- lsr.l #8,d5
- lsr.l #2,d5
-
- move.l #$00,d4
- move.w d3,d4
- lsr.l #5,d4
- lsr.l #6,d4
- rts
-
- CheckIDCMP: move.l $4,a6 ;made this a SubRoutine...
- move.l $56(a0),a2 ;Give it the window structure in a0
- move.l #0,d1
- move.b $0f(a2),d1
- move.l #0,d0
- bset.l d1,d0
- jsr _LVOWait(a6)
-
- GetMsg1: move.l a2,a0
- jsr _LVOGetMsg(a6)
- tst.l d0
- beq GetMsg2
-
- move.l d0,a1
- move.l $14(a1),d2 ;answers with Class in d2,
- move.w $18(a1),d3 ;Code in d3 and
- move.w $1a(a1),a4 ;Qualifier in a4
- move.l $1c(a1),a5 ;IAddress in a5
- jsr _LVOReplyMsg(a6)
- bra GetMsg1
- GetMsg2: move.l #-1,d0
- rts
-
- ClearMSGs: move.l a0,d0 ;Give it the window structure in a0
- tst.l d0
- beq ClearMsg3
- move.l a0,a3
- lib Exec,Forbid
- move.l $56(a3),a2
- ClearMsg1: move.l a2,a0
- lib Exec,GetMsg
- tst.l d0
- beq ClearMsg2
- move.l d0,a1
- flib Exec,ReplyMsg
- bra ClearMsg1
- ClearMsg2: move.l a3,a0
- lib Intuition,CloseWindow
- lib Exec,Permit
- ClearMsg3: rts
-
- ds.l 0
-
- ;--------------------Structures------------------
-
- ;Display stuff
-
- Window1 dc.l 0
- Win1RP dc.l 0
- PubScreen dc.l 0
- YOffset dc.b 8,0
-
- ;Library stuff (well what's needed anymore)
-
- libnames
-
- ;Task stuff
-
- SCCTask dc.l 0
-
- ;WB Stuff
-
- WBMsg dc.l 0
- ArgList dc.l 0
- ArgsLeft dc.l 0
- OldLock dc.l 0
-
- ;File stuff
-
- _stdout dc.l 0
- SCCAddress dc.l 0
- SCCLength dc.l 0
- SCCFile dc.l 0
- FileBuf dc.l $ffffffff
- NILName: dc.b "NIL:",0
- ds.l 0
- NILFile: dc.l 0
-
- ;req.lib stuff/requester stuff
-
- INCLUDE "LWF:SimCC/SCCFileRequester.i"
-
- ;Other stuff XIV
-
- Mode dc.w 0 ;0=Intuition, 1=dos
- Kick dc.w 0 ;0=1.3, 1=2.0+
-
- ;0 = SimCity
- ;
- ;1 = PoC Player #1
- ;2 = PoC Player #2
- ;3 = PoC Player #3
- ;4 = PoC Player #4
- ;
- ;5 = Oil Player #1
- ;6 = Oil Player #2
- ;7 = Oil Player #3
- ;8 = Oil Player #4
- ;9 = RailRoad Tycoon
-
- Game dc.w 0
-
- ;Texts, Part I
-
- SCCName dc.b "SimCity 1.1 cheat by Tomi Blinnikka",0
- PoCName dc.b "Ports of Call cheat by Tomi Blinnikka",0
- GetSimName dc.b "Get SimCity city filename...",0
- GetPoCName dc.b "Get Ports of Call game filename...",0
- GetOilName dc.b "Get Oil Imperium game filename...",0
- GetRRTName dc.b "Get RailRoad Tycoon game filename...",0
- PositiveText1 dc.b "Yes",0
- NegativeText1 dc.b "No",0
- ds.l 0
-
- ;Font thing
-
- Topaz dc.l FontName
- dc.w 8
- dc.b 0
- dc.b 0
- FontName dc.b "topaz.font",0
- ds.l 0
-
- ;New screen & new window structures
-
- NewWindow1 dc.w 200,31 ;X,Y POS
- dc.w 302 ;WIDTH
- Win1YSize dc.w 43 ;HEIGHT
- dc.b 0,1 ;PENS
- dc.l MOUSEBUTTONS+CLOSEWINDOW+VANILLAKEY+RAWKEY+MENUPICK ;IDCMP FLAGS
- dc.l WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE ;FLAGS
- dc.l 0,0 ;GADGETS, CHECKMARK
- dc.l WindowTitle1 ;TITLE
- dc.l 0 ;SCREEN ADDRESS
- dc.l 0 ;BITMAP
- dc.w 192
- dc.w 11,300,43 ;MINIMUM SIZE
- dc.w WBENCHSCREEN ;TYPE
-
- Win1TagList dc.l WA_AutoAdjust,0
- dc.l WA_InnerWidth,300
- dc.l WA_InnerHeight,30
- dc.l WA_Zoom,Win1ZoomXY
- dc.l TAG_DONE,0
-
- Win1ZoomXY dc.w 0,20,192
- Win1ZoomY dc.w 11
-
- WindowTitle1 dc.b "SimCity cheat",0
- WindowTitle2 dc.b "Ports of Call cheat",0
- WindowTitle3 dc.b "Oil Imperium cheat",0
- WindowTitle4 dc.b "RailRoad Tycoon cheat",0
- ds.l 0
-
- ;Gadget structures
-
- INCLUDE "LWF:SimCC/SCCGads.i"
-
- ;Now for all the imagery and borders etc.
-
- GadgetBorder1 dc.w -1 ;Initial offsets from the origin
- dc.w -2 ;LeftEdge and TopEdge
- dc.b 1,2 ;Pens
- dc.b 1 ;Draw Mode
- dc.b 5 ;Line Count (XY)
- dc.l BorderXY1 ;XY's
- dc.l 0 ;Next Border
- dc.b 0
- ds.l 0
- BorderXY1 dc.w 0,0
- dc.w 90,0
- dc.w 90,11
- dc.w 0,11
- dc.w 0,0
- dc.b 0
- ds.l 0
-
- ;Menus
-
- INCLUDE "LWF:SimCC/SCCMenus.i"
-
- ;Texts, Part II
-
- AboutTxt1: dc.b 3,1 ;PENS
- dc.w 0 ;MODE
- dc.w 10,10 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l AboutText1 ;TEXT
- dc.l AboutTxt2 ;NEXTTEXT
- ds.l 0
-
- AboutTxt2: dc.b 3,1 ;PENS
- dc.w 4 ;MODE
- dc.w 10,20 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l AboutText2 ;TEXT
- dc.l AboutTxt3 ;NEXTTEXT
- ds.l 0
-
- AboutTxt3: dc.b 3,1 ;PENS
- dc.w 4 ;MODE
- dc.w 10,30 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l AboutText3 ;TEXT
- dc.l AboutTxt4 ;NEXTTEXT
- ds.l 0
-
- AboutTxt4: dc.b 3,1 ;PENS
- dc.w 4 ;MODE
- dc.w 10,50 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l AboutText4 ;TEXT
- dc.l 0 ;NEXTTEXT
- ds.l 0
-
- dc.b "$VER: SimCheat 1.07, (C)opyright Tomi Blinnikka.",0
- AboutText1: dc.b "SimCity 1.1 cheat program v1.07",0
- AboutText2: dc.b " by",0
- AboutText3: dc.b " Tomi Blinnikka",0
- AboutText4: dc.b " (C)opyright 1991-92",0
- ds.l 0
-
- FinitoTxt1: dc.b 3,1 ;PENS
- dc.w 4 ;MODE
- dc.w 10,20 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l FinitoText1 ;TEXT
- dc.l 0 ;NEXTTEXT
- ds.l 0
- FinitoText1: dc.b "Finished.",0
- ds.l 0
-
- OKTxt: dc.b 3,1 ;PENS
- dc.w 0 ;MODE
- dc.w 6,3 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l OKText1 ;TEXT
- dc.l 0 ;NEXTTEXT
- ds.l 0
- OKText1: dc.b "OK",0
- ds.l 0
- CancelTxt: dc.b 3,1 ;PENS
- dc.w 0 ;MODE
- dc.w 6,3 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l CancelText1 ;TEXT
- dc.l 0 ;NEXTTEXT
- ds.l 0
- CancelText1: dc.b "CANCEL!",0
- ds.l 0
-
- Cheat?Txt: dc.b 3,1 ;PENS
- dc.w 4 ;MODE
- dc.w 10,10 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l CheatText1 ;TEXT
- dc.l 0 ;NEXTTEXT
- ds.l 0
-
- CheatText1: dc.b "Cheat on this file?",0
- ds.l 0
-
- WrongTxt1: dc.b 3,1 ;PENS
- dc.w 4 ;MODE
- dc.w 10,10 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l FWrongText1 ;TEXT
- dc.l 0 ;NEXTTEXT
- ds.l 0
-
- FWrongText1: dc.b "Incorrect file! Try anyway?",0
- ds.l 0
-
- Win1Txt1: dc.b 1,2 ;PENS
- dc.w 0 ;MODE
- dc.w -16,-18 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l Win1Text1 ;TEXT
- dc.l 0 ;NEXTTEXT
- ds.l 0
- Win1Text1: dc.b "Amount of money?",0
- ds.l 0
-
- RRTSpecialTxt: dc.b 1,2 ;PENS
- dc.w 0 ;MODE
- dc.w 205,21 ;LEFT+TOPEDGE
- dc.l Topaz ;FONT
- dc.l RRTSText1 ;TEXT
- dc.l 0 ;NEXTTEXT
- ds.l 0
- RRTSText1: dc.b "000",0
- ds.l 0
-
- ; section SCC_ChipStuff,DATA,CHIP
-
- END
-