Jump to content
IGNORED

Atari 800 Pac Man source code


Recommended Posts

Yes, it would make perfect sense that this is the code basis for all the other versions.  So Andreasen created the 5200 port by updating this version's ghost logic and reprogramming the controls for analog.  The funny things is, Ron Borta from Roklan claimed that they studied the arcade version extensively and tried to replicate the ghost behavior exactly.  So what changes were made to the 5200 port, and which version has more arcade-like behavior?

Link to comment
Share on other sites

On 8/29/2019 at 10:23 PM, ijor said:

Yes, that was more or less clear. Less clear is if the modifications or additions to assemble multiple Pac Man versions from the MADS source is based on original material, or not (it combines original source with reverse engineered code). Or, if you want, the source covers just one version of Pac Man, and if so which one.

 

Thanks

The archive "PAC-MAN_Source_Code_Macro_Assembler.zip" contains the original source code in original format. In that set of files, one was misssing. That file named "PACDAT1.ASM" contained only charset and display list data, not code and was restored from the binary. So if you happen to have an original Atari DEV environment you should be able to verify it ?
 

;	MISSING LABELS & DATA

PACCHR
	.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3C,$3C,$00,$00,$00
	.byte $3C,$3C,$FF,$FF,$FF,$FF,$3C,$3C,$00,$00,$01,$04,$04,$04,$04,$04
	.byte $00,$00,$40,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10,$40,$00,$00
	.byte $04,$04,$04,$04,$04,$01,$00,$00,$00,$00,$55,$00,$00,$50,$04,$04
	.byte $00,$00,$40,$10,$10,$40,$00,$00,$00,$00,$55,$00,$00,$05,$10,$10
	.byte $00,$00,$01,$04,$04,$01,$00,$00,$00,$00,$FF,$00,$00,$00,$00,$00
	.byte $00,$00,$55,$00,$00,$55,$00,$00,$04,$04,$04,$04,$04,$04,$04,$04
	.byte $00,$00,$55,$00,$00,$00,$00,$00,$10,$10,$10,$10,$10,$10,$10,$10
	.byte $00,$00,$00,$00,$00,$55,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01
	.byte $01,$01,$01,$01,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01
	.byte $40,$40,$40,$40,$40,$40,$40,$40,$00,$00,$55,$00,$00,$50,$04,$04
	.byte $00,$00,$55,$00,$00,$05,$10,$10,$04,$04,$50,$00,$00,$55,$00,$00
	.byte $10,$10,$05,$00,$00,$55,$00,$00,$10,$10,$05,$00,$00,$05,$10,$10
	.byte $04,$04,$50,$00,$00,$50,$04,$04,$3C,$FF,$3F,$0F,$3F,$FF,$3C,$00
	.byte $00,$00,$15,$40,$00,$05,$10,$10,$10,$10,$05,$00,$40,$15,$00,$00
	.byte $00,$00,$54,$01,$00,$50,$04,$04,$04,$04,$50,$00,$01,$54,$00,$00
	.byte $00,$00,$00,$00,$40,$40,$40,$40,$40,$40,$40,$40,$00,$00,$00,$00
	.byte $00,$3F,$3C,$3C,$3F,$3C,$3C,$00,$00,$F0,$3C,$3C,$F0,$F0,$3C,$00
	.byte $00,$FF,$F0,$FF,$F0,$F0,$FF,$00,$00,$C0,$03,$0F,$0F,$0F,$CF,$00
	.byte $00,$F0,$FC,$0F,$0F,$FF,$0F,$00,$00,$3F,$3C,$3C,$3C,$3C,$3F,$00
	.byte $00,$C0,$F0,$3C,$3C,$F0,$C0,$00,$00,$F0,$F0,$3F,$0F,$0F,$0F,$00
	.byte $00,$F3,$F3,$C3,$00,$03,$03,$00,$00,$C0,$C0,$C0,$00,$C0,$C0,$00
	.byte $00,$3F,$F0,$F0,$F3,$F0,$3F,$00,$00,$F0,$00,$03,$F3,$F3,$F3,$00
	.byte $00,$3C,$FF,$C3,$C3,$FF,$C3,$00,$00,$0F,$0F,$CF,$CF,$CF,$CF,$00
	.byte $00,$03,$CF,$FF,$33,$03,$03,$00,$00,$CF,$CF,$CF,$CF,$CF,$CF,$00
	.byte $00,$FC,$00,$F0,$00,$00,$FC,$00,$00,$00,$03,$03,$03,$03,$00,$00
	.byte $00,$FF,$C3,$C3,$C3,$C3,$FF,$00,$00,$0F,$CF,$CF,$CF,$C3,$00,$00
	.byte $00,$3C,$3C,$3C,$3C,$F0,$C0,$00,$00,$FF,$F0,$FF,$F0,$F0,$FF,$00
	.byte $00,$CF,$0F,$0F,$0F,$0F,$CF,$00,$00,$FC,$0F,$0F,$FC,$3C,$0F,$00
	.byte $00,$03,$0C,$2A,$2A,$2A,$3A,$2A,$30,$F0,$30,$A8,$A8,$E8,$A8,$00
	.byte $03,$0F,$2A,$2E,$2A,$2B,$0A,$02,$00,$C0,$A0,$E0,$A0,$A0,$80,$00
	.byte $02,$02,$0F,$3F,$3F,$3F,$3F,$0F,$00,$00,$C0,$F0,$F0,$F0,$F0,$C0
	.byte $03,$0A,$2A,$2A,$2A,$2A,$2A,$0A,$00,$80,$A0,$A0,$E0,$E0,$A0,$80
	.byte $03,$03,$0A,$2A,$2A,$2A,$2A,$0A,$00,$00,$80,$A0,$A0,$A0,$A0,$80
	.byte $03,$03,$05,$15,$15,$15,$15,$05,$00,$00,$40,$50,$50,$50,$50,$40
	.byte $22,$22,$22,$22,$22,$A2,$82,$82,$20,$20,$20,$20,$20,$28,$08,$08
	.byte $11,$11,$11,$11,$11,$51,$41,$41,$10,$10,$10,$10,$10,$14,$04,$04
	.byte $03,$0D,$3F,$3F,$3F,$3A,$2B,$0A,$00,$C0,$F0,$F0,$F0,$B0,$A0,$80
	.byte $0A,$08,$0A,$03,$03,$03,$03,$03,$A0,$20,$A0,$C0,$F0,$C0,$F0,$C0
	.byte $00,$03,$00,$00,$00,$00,$03,$00,$C0,$C3,$C3,$C3,$C3,$C3,$F0,$00
	.byte $3F,$00,$00,$03,$00,$30,$0F,$00,$F0,$33,$C3,$C3,$33,$33,$C0,$00
	.byte $3F,$30,$3F,$00,$00,$30,$0F,$00,$F0,$03,$C3,$33,$33,$33,$C0,$00
	.byte $3F,$00,$00,$03,$0C,$0C,$0C,$00,$F0,$33,$C3,$03,$03,$03,$00,$00
	.byte $03,$0F,$03,$03,$03,$03,$0F,$00,$03,$0C,$0C,$0C,$0C,$0C,$C3,$00
	.byte $3F,$C0,$00,$0F,$30,$C0,$FF,$00,$03,$CC,$CC,$0C,$0C,$0C,$C3,$00
	.byte $FF,$00,$03,$0F,$00,$C0,$3F,$00,$C3,$CC,$0C,$0C,$CC,$CC,$03,$00
	.byte $FF,$C0,$FF,$00,$00,$C0,$3F,$00,$C3,$0C,$0C,$CC,$CC,$CC,$03,$00
	.byte $C0,$33,$33,$33,$33,$33,$C0,$00,$F0,$0C,$0C,$0C,$0C,$0C,$F0,$00
	.byte $3C,$C3,$C3,$C3,$C3,$C3,$3C,$00,$00,$00,$55,$00,$00,$54,$01,$01
	.byte $01,$01,$54,$00,$00,$55,$00,$00,$00,$00,$55,$00,$00,$15,$40,$40
	.byte $40,$40,$15,$00,$00,$55,$00,$00,$00,$AA,$A0,$A0,$AA,$A0,$A0,$00
	.byte $00,$82,$A2,$A2,$82,$02,$02,$00,$00,$80,$80,$80,$80,$80,$AA,$00
	.byte $00,$02,$0A,$28,$28,$2A,$28,$00,$00,$02,$82,$A0,$A0,$A0,$A0,$00
	.byte $00,$82,$82,$AA,$28,$28,$28,$00,$00,$8A,$8A,$0A,$0A,$0A,$0A,$00
	.byte $00,$A8,$00,$A0,$00,$00,$A8,$00,$00,$AA,$A0,$A0,$AA,$A2,$A0,$00
	.byte $00,$80,$A0,$A0,$80,$80,$A0,$00,$00,$00,$02,$00,$00,$00,$0A,$00
	.byte $00,$A0,$A0,$A0,$A0,$A0,$AA,$00,$00,$02,$0A,$00,$00,$02,$0A,$00
	.byte $00,$A8,$0A,$28,$A0,$80,$AA,$00

DATMAZ
	.byte $00,$11,$1C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
	.byte $0C,$0C,$0C,$15,$16,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
	.byte $0C,$0C,$0C,$0C,$0C,$1E,$20,$00,$00,$13,$0F,$01,$01,$01,$01,$01
	.byte $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0D,$0F,$01,$01,$01
	.byte $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0D,$14,$00
	.byte $00,$13,$0F,$01,$03,$0E,$0E,$0E,$04,$01,$03,$0E,$0E,$0E,$0E,$0E
	.byte $0E,$04,$01,$0D,$0F,$01,$03,$0E,$0E,$0E,$0E,$0E,$0E,$04,$01,$03
	.byte $0E,$0E,$0E,$04,$01,$0D,$14,$00,$00,$13,$0F,$02,$06,$10,$10,$10
	.byte $05,$01,$06,$10,$10,$10,$10,$10,$10,$05,$01,$06,$05,$01,$06,$10
	.byte $10,$10,$10,$10,$10,$05,$01,$06,$10,$10,$10,$05,$02,$0D,$14,$00
	.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
	.byte $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
	.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$13,$0F,$01,$0A,$0C,$0C,$0C
	.byte $08,$01,$03,$0E,$04,$01,$0A,$0C,$0C,$0C,$0C,$07,$09,$0C,$0C,$0C
	.byte $0C,$08,$01,$03,$0E,$04,$01,$0A,$0C,$0C,$0C,$08,$01,$0D,$14,$00
	.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$0D,$00,$0F,$01,$01,$01
	.byte $01,$01,$01,$0D,$0F,$01,$01,$01,$01,$01,$01,$0D,$00,$0F,$01,$01
	.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$12,$1D,$0C,$0C,$0C,$0C,$61
	.byte $04,$01,$0D,$00,$19,$0C,$0C,$0C,$0C,$08,$00,$06,$05,$00,$0A,$0C
	.byte $0C,$0C,$0C,$1A,$00,$0F,$01,$03,$63,$0C,$0C,$0C,$0C,$1F,$21,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$13,$0F,$01,$0D,$00,$0F,$00,$00,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0D,$00,$0F,$01,$0D
	.byte $14,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0C,$0C,$0C,$0C,$0C,$62
	.byte $05,$01,$06,$10,$05,$00,$03,$0E,$0E,$0E,$0E,$0B,$0B,$0E,$0E,$0E
	.byte $0E,$04,$00,$06,$10,$05,$01,$06,$64,$0C,$0C,$0C,$0C,$0C,$00,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$00,$00,$00,$0D,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$00,$00,$00,$00,$01,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0C,$0C,$0C,$0C,$0C,$61
	.byte $04,$01,$03,$0E,$04,$00,$06,$10,$10,$10,$10,$10,$10,$10,$10,$10
	.byte $10,$05,$00,$03,$0E,$04,$01,$03,$63,$0C,$0C,$0C,$0C,$0C,$00,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$13,$0F,$01,$0D,$00,$0F,$00,$00,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0D,$00,$0F,$01,$0D
	.byte $14,$00,$00,$00,$00,$00,$00,$00,$00,$11,$1C,$0C,$0C,$0C,$0C,$62
	.byte $05,$01,$06,$10,$05,$00,$0A,$0C,$0C,$0C,$0C,$07,$09,$0C,$0C,$0C
	.byte $0C,$08,$00,$06,$10,$05,$01,$06,$64,$0C,$0C,$0C,$0C,$1E,$20,$00
	.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
	.byte $01,$01,$01,$0D,$0F,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
	.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$13,$0F,$01,$0A,$0C,$0C,$15
	.byte $04,$01,$0A,$0C,$0C,$0C,$0C,$0C,$0C,$08,$01,$06,$05,$01,$0A,$0C
	.byte $0C,$0C,$0C,$0C,$0C,$08,$01,$03,$16,$0C,$0C,$08,$01,$0D,$14,$00
	.byte $00,$13,$0F,$02,$01,$01,$01,$0D,$0F,$01,$01,$01,$01,$01,$01,$01
	.byte $01,$01,$01,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0D
	.byte $0F,$01,$01,$01,$02,$0D,$14,$00,$00,$13,$19,$0C,$0C,$08,$01,$06
	.byte $05,$01,$03,$0E,$04,$01,$0A,$0C,$0C,$0C,$0C,$07,$09,$0C,$0C,$0C
	.byte $0C,$08,$01,$03,$0E,$04,$01,$06,$05,$01,$0A,$0C,$0C,$1A,$14,$00
	.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$0D,$00,$0F,$01,$01,$01
	.byte $01,$01,$01,$0D,$0F,$01,$01,$01,$01,$01,$01,$0D,$00,$0F,$01,$01
	.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$13,$0F,$01,$0A,$0C,$0C,$0C
	.byte $0C,$0C,$17,$10,$18,$0C,$0C,$0C,$0C,$08,$01,$06,$05,$01,$0A,$0C
	.byte $0C,$0C,$0C,$17,$10,$18,$0C,$0C,$0C,$0C,$0C,$08,$01,$0D,$14,$00
	.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
	.byte $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
	.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$12,$1D,$0C,$0C,$0C,$0C,$0C
	.byte $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
	.byte $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$1F,$21,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
	.byte $00,$00,$00,$00,$00,$00,$00,$00

ODLIST
	.byte $70,$70,$42,$00,$28,$02,$C6,$00,$24,$07,$07,$86,$06,$06,$06,$06
	.byte $86,$04,$86,$06,$06,$06,$06,$06,$06,$06,$06,$86,$44,$70,$17,$41, a(ODLIST)

DLIST
	.byte $70,$70,$42,$00,$28,$82,$C4,$00,$14,$04,$04,$04,$04,$04,$04,$04
	.byte $04,$04,$84,$04,$04,$04,$04,$04,$04,$04,$04,$04,$84,$84,$04,$F0
	.byte $41,a(DLIST)

ADLIST
	.byte $70,$70,$C2,$00,$28,$02,$46,$00,$30,$06,$86,$06,$06,$06,$06,$06
	.byte $06,$06,$86,$06,$06,$06,$86,$06,$06,$06,$06,$06,$86,$06,$44,$70
	.byte $17,$41,a(ADLIST)
NULLDL
	.byte $70,$70,$70,$41,a(NULLDL)

INTDLC
	.byte $70,$70,$70,$42,$00,$28,$02,$F0,$70,$70,$70,$70,$70,$70,$70,$70
	.byte $70,$54,$00,$2C,$54,$50,$2C,$54,$A0,$2C,$41,$80,$06

The MADS version of the code is a 1:1 syntax format conversion of the original code that compiles to the exact same result at the exact same locations.
No logic or semantic changes have been applied.
The differences in the Atari/DataSoft/etc. versions can be found in the source by looking for the "VERSION" string.
By specifying -DVERSION=1 to 4 you can control which of the variants is built.
All variants are 100% identical to the respective original (unpacked, decoded) binary. 

  • Like 6
Link to comment
Share on other sites

  • 4 weeks later...
19 hours ago, dukdukgoos said:

Maybe put these on Github JAC? For preservation and easy forking?

Well, that would apply to basically everything on AtariWiki. Also I would not want such code (copyright...) to be under my personal git. We consider AtariWiki itself as the right central place for preservation.

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...