
   DiESEL proudly presents

                         
                          
                       
                      
                    
                           

   Version 0.72Beta
   Written by HeroZero/DiESEL
     Ascii by Rocky/DiESEL
<------------------------------------------------------------------------------

INTRO:                                                                    
Hello and welcome to the first beta of DMG-DIZ.                           
DMG-DIZ is the first public GameBoy disassembler          
available for MS-DOS. I hope you will find it usefull.   

WHAT DOES IT DO??:                                                   
It disassembels GameBoy ROM images like .boy files.               
I think I have included all special instructions                    
thats in the GameBoys Z80++ processor.                   
                                                         
Only the most important commands is included in this
beta and the implementation of them is not perfect so       
please avoid double spaces, tabs and other wierd            
things while typing commands..                                      
                                                             
All commands does only understand hex arguments.             
Heres a list with examples and warnings.
                                                                     
d = disassemble                                                   
ex:                                                                 
 d 015000 Disassembels from bank 1 adress 5000           
 d 5000   Disas. from adress 5000 of the current bank    
 d 3000   Disas. from adress 3000 of bank 0
                                                            
 Adresses lower then 4000 is always bank 0                  

m = View memory as hex                                    
ex:                                                      
 Works the same way as the d command                                   
                                                         
h = hunt memory for a series of bytes                    
Warning... Does only search in bank0 and the current bank.
This will be fixed..
ex:
 h 01 02 03 Searches for the bytes 01 02 and 03
 Remember that it only searches the current bank.
 Up to 16 bytes can be sent to the h command.

c = change byte                                                           
Changes a byte in the .boy file. Changes are                              
written to disk. Does only work on bank 0                 
and the current bank.                                    

ex:                                                                  
 c 025000 00 doesnt work you must switch to bank 2                
             first                                                  
 b 02                                                    
 c 5000 00   Should work and changes 025000 to 00        

Its not possible to write                                   
 c 2000 00 00 00 but ill fix that soon..                    
                                                                    
b = change bank                                              
This command will not be included in the next version        
but since this is an early beta...
                                                                     
ex:                                                               
 b 02         Switches to bank 02                                   
                                                         
Sorry about the bank problem but ill fix it ASAP.        
Just havent had the time yet :(
                                                            
q = quit                                                    
Quits the disass.
                                                          
                                                         
Well, thats about it..                                                 
                                                         
                                                         
MEMORY EXPLANATION:
OK, so the GB uses bank switching..
There is always 2 banks active.
The first is bank 0 (0000-3fff) and the second
is bank X wich always is 4000-7fff.
BankX is the one that gets switched in and out.
I have included a PCX file from PAN/Anthrox (Dr??), hope he 
doesn't mind, that explains this.
So adresses 0-3fff is always bank0 and 4000-7fff can be any bank (xept bank0).
Kinda fuzzy I know but my English isn't very good.

The starting adress is alway $0100 normaly its a nop and a jp $0150 but not
always..

THINGS THAT WILL BE ADDED:
Well its up to you.. What do you want??
I will include some kind of logging output to file and
a Send current file to SmartCard..

Let me here what you want...



Greetings to the following dudes...
                                                                          
The White Knight/Anthrox                                                  
for various reasons.                                      
                                                         
Pan/Anthrox
for always sharing interesting info.                                 
                                                                  
Tom/Holland                                                         
The only true GB hacker.                                 
Mail me if you se this man...                            

The Mussel factory                                          
for lending me the hardware I needed.                       
                                                                    
                                                             
Dont send bug reports yet, I think I know                    
most of them already, but tips and suggestions
is always welcome (and of course money).                             
                                                                  
You can reach me by e-mail                                          
herozero@diesel.jcd.se                                   
or on irc as HeroZero                                    
im always on #gameboy
or by writing me a mess. in the GameBoy mailing list.       
                                                            
If anyone is interested in writing a GameBoy assembler
I can provide him/her with the necessary info.            
I dont have the time to do it myself :(                  
                                                                       
The uncommented unstructured:) source code is            
available to anyone who needs it.                        
Its in TurboPascal.

Ive also included an .boy file info application that shows some misc. info
about your rom image. Its called gbi.exe. Might be usefull sometimes.
I have not included any ROM images since it illegal. It up to you
to dump your games to disk..

If you need some hardware to code your GameBoy just leave me a mail
I will fix some info for you..

I tried this software on a 286 and it works OK. But its not fast.


Leagal stuff...
Im not responsible for anything..
Use this software at your own risk.
None of the info used to create this software comes
from confidential Nintendo documents or any other
confidential source.
Nintendo, GameBoy and Z80 are trademarks of someone I think...


YES, this readme file will be rewritten...
Please excuse my English :)

--> HeroZero/DiESEL



Last minute update:
The c command for changing bytes is now improved..
Hmm, guess Ill call it 0.74beta now then :)
Its now ok to change several bytes in a row like

c 1000 ff ff ff
or
c 026000 00 00 00 00 00 00 00

up to 16 bytes (I think) in a row...
Watch out just a little...
things like 
c 007000 ff wont work bacause addr. 7000 isnt in bank 00
and
c 013000 ff wont work ither beacuse addr 3000 isnt in bank 01, its in bank 00.

Other things that can go wrong is
c 3fff ff ff ff ff is not accepted because you are not allowed to pass over to
$4000 since any bank can be loaded there.. Its for your own safety :)
and
c 7fff ff ff same thing almost.. 8000 and above is not someware in your rom so
we cant change it OK??


One more thing.. I just noticed that Ive put to many intructions in there.
Seems like they riped you a few and xchanged a few and added a few.
I will fix that soon...


One last time all values are in hex..

