Pacmania LOCK fix
=================

Fix for non-functional or missing IC "CUSTOM" location
F10 on the pacmania board.

The chip contains a key value and a hardware divider
function. 

Check the PM-FIX.LST for the source code for all
the replacement functions.

-JR


---------------------------------------------
Details of changed made to program ROM "PRG7"
---------------------------------------------



offset    value       comments
------------------------------
         new old


00000020: 12 16       ; nop         - call to lock test fix
00000021: 12 1A       ; nop
00000022: 12 8E       ; nop


000004CC: 12 26       ; nop         - call to  rom checksum fix
000004CD: 12 11       ; nop



00004BDA: 12 FD       ; do divide function
00004BDB: 12 80       ; function does a divide by 2 (!)
00004BDC: 12 02       
00004BDD: 12 30   
00004BDE: 12 1E   
00004BDF: 12 EC   
00004BE0: BD 84       jsr $F630       
00004BE1: F6 93       
00004BE2: 30 74
00004BE3: 12 84
00004BE4: 12 01
00004BE5: 12 B3
00004BE6: 12 80
00004BE7: 12 02



00005E78: BD F6      jsr $F6A0    ; divide 'D' / 10
00005E79: F6 80
00005E7A: A0 03


00005E84: BD F6      jsr $F6B1   ;  calc 'D' mod 10
00005E85: F6 80
00005E86: B1 01


00005EDB: BD F6      jsr $F660  ; 'B' = 'D'  /  16
00005EDC: F6 80
00005EDD: 60 03

00005EF4: BD F6      jsr $F668  ; 'B' = 'D' mod 16
00005EF5: F6 80
00005EF6: 68 01


0000730D: 1C B6      ANDCC #$FE   ; complete cheat just /2 
0000730E: FE 80                   ; works fine ;-)
0000730F: 46 03      ROR A



; fix some dividers to be easier to work with
; you can use these to multiply with the patch
; later in the code
; ie.
; (A * $100 / $101) =>  ( A * $ff ) / $100
; (A * $100 / $107) =>  ( A * $f9 ) / $100
;

00007322: 00 01      ; -  LDU         #$0107  orig
00007323: F9 07      ; LDU #$00f9 

0000732A: 00 01      ; -  LDU         #$0101  orig 
0000732B: FF 01      ; ldu #$00ff

00007332: 00 01      ; -  LDU         #$0102  orig  
00007333: FE 02      ; ldu #$00fe

0000733A: 00 01      ; -  LDU         #$0107  orig
0000733B: F9 07      ; ldu #$00f9



00007381: BD FD      jsr $f670  ; divider changed to a mult.
00007382: F6 80                 ; see above
00007383: 70 02
00007384: 12 B6      
00007385: 12 80
00007386: 12 03



000075D3: BD F6      ; call $f660       ; / 16
000075D4: F6 80
000075D5: 60 03

000075EC: BD F6      ; call $f668       ; mod 16
000075ED: F6 80
000075EE: 68 01



