- Bank chaining, as a way to fake banks larger than 8K.
- Additional registers in the postprocessor VM for accessing the ROM data in a way similar to how the PPU does.
- The error message "Internal error [1]!" has been changed to "Symbol value changed between passes!"
- A few new MACSET modes have been added.
MagicKit assembler new unofficial version
Moderator: Moderators
Re: MagicKit assembler new unofficial version
It has been upgraded. New features includes:
[url=gopher://zzo38computer.org/].[/url]
- Hamtaro126
- Posts: 775
- Joined: Thu Jan 19, 2006 5:08 pm
Re: MagicKit assembler new unofficial version
I'm on a Win64 system, And a version for MinGW(32 or 64) doesn't exist!You need nkf (Network Kanji Filter) to compile ppmckc properly on un*x system
Is this a full-on Requirement, or can support for NKF be removed?
EDIT: NKF is os-independent, Misread about it... Should rebuild with MinGW when ready!
AKA SmilyMZX/AtariHacker.
Re: MagicKit assembler new unofficial version
It has quickly been updated again; here is a list of some new features:
- Command-line option to override output filename.
- Some new ?letter expressions.
- Map file output (contains map of used ROM space and all symbols in the assembler).
- Pseudopage numbers (usable with map files and postprocessors).
- Custom character sets.
- Bank chaining now works with the DS command too.
[url=gopher://zzo38computer.org/].[/url]
Re: MagicKit assembler new unofficial version
Hi,
I downloaded and compiled your version of nesasm and tried "bank chaining", but it doesn't work. Here's how I try to make it work:
Code in bank 0 exceeds 8kb and I still get the sam error as in the old nesasm:
I tried some other combinations with the name of the bank, but none works. How I'm suposed to make it correctly?
I downloaded and compiled your version of nesasm and tried "bank chaining", but it doesn't work. Here's how I try to make it work:
Code: Select all
.bank 0,"Music"
.org $8000
;Here goes some code.
.bank 1,"Music"
.org $A000
;Empty bank, nothing here.
Code: Select all
Bank overflow!, offset > $1FFF!
Re: MagicKit assembler new unofficial version
The bank has to be named before the overflow occurs, so do it like this:Denine wrote:Hi,
I downloaded and compiled your version of nesasm and tried "bank chaining", but it doesn't work. Here's how I try to make it work:Code in bank 0 exceeds 8kb and I still get the sam error as in the old nesasm:Code: Select all
.bank 0,"Music" .org $8000 ;Here goes some code. .bank 1,"Music" .org $A000 ;Empty bank, nothing here.
I tried some other combinations with the name of the bank, but none works. How I'm suposed to make it correctly?Code: Select all
Bank overflow!, offset > $1FFF!
Code: Select all
.bank 1,"Music"
.bank 0,"Music"
.org $8000
;Here goes some code.
[url=gopher://zzo38computer.org/].[/url]
Re: MagicKit assembler new unofficial version
Thanks and...sorry to be such a bother, but I have other problem now.
For some reason, your version do not recognize labels when pointers are made(?). Here's what I'm doing:
The error I'm getting is "Syntax error in expression".
The whole project assembles correctly with standard nesasm.
For some reason, your version do not recognize labels when pointers are made(?). Here's what I'm doing:
Code: Select all
.bank 1,"Music"
.bank 0,"Music"
.org $8000
.dw label
;enough code and data to cross 8kb mark
label:
;something
The whole project assembles correctly with standard nesasm.
Re: MagicKit assembler new unofficial version
That's strange...it works on my computer!Denine wrote:For some reason, your version do not recognize labels when pointers are made(?).
....
The error I'm getting is "Syntax error in expression".
The whole project assembles correctly with standard nesasm.
What line number is the error? Check which expression is error, maybe that helps a bit.
[url=gopher://zzo38computer.org/].[/url]
Re: MagicKit assembler new unofficial version
Aaahh..I got it now.
Original NESASM seems to support more letters in one line.
The thing is, I usually sort my pointer by 16 per line, so I can count them more easily.
...so my line was:
And NESASM accepted this. (This is probably bad habit of sorting pointers like that, right?) But your version supports less letters per line. So, I just changed my pointer lines to:
Next, I'v got yet another error. I'm using shiru's Famitone 2.
The music file converted by text2data tool have line:
But now, the ROM is not working! The part of insides of my Main file:
Reset code is at $F000, it clears RAM, then waits for Vblank few frames.
I traced the code with FCEUX and it seems that game crashes because jsr points to...somewhere in GFX data. jsr was supposed to point at waitVblank function but it does not. Using Hex editor(the one built in FCEUX), I found the waitVblank code at $B502, but jsr points at $9544...
The GFX_Load have several graphics files included, they cross Bank0 and Bank1 boundary.
Sorry, to be such a pain...it's probably my mistake somewhere...I can send you a source files via PM, if you want.
Original NESASM seems to support more letters in one line.
The thing is, I usually sort my pointer by 16 per line, so I can count them more easily.
...so my line was:
Code: Select all
.dw Label1,Label2,Label3(...)Label16
Code: Select all
.dw Label1,Label2,Label3,Label4
.dw Label5,Label6,Label7,Label8
(etc)
The music file converted by text2data tool have line:
I just deleted "-4" and finally, compiled the ROM. I just though it may be worth mentioning.dw .samples-4
But now, the ROM is not working! The part of insides of my Main file:
Code: Select all
.bank 1,"name"
.bank 0,"name"
.org $8000
.include "Music\Famiton2.asm" ;Music driver
Music.TBL:
.dw Music
.include "GFX/GFX_Load.txt" ;GFX
.include "SYS/Scoring.txt" ;Score calculations
.include "GFX/Palety.txt" ;Palette works
.include "SYS/Buffer.PPU.txt" ;PPU Buffer code
.include "SYS/KEYPAD.txt" ;Keypad handler
.include "SYS/Grafika.txt" ;Various, turning on and off ppu, waiting for Vblank.
I traced the code with FCEUX and it seems that game crashes because jsr points to...somewhere in GFX data. jsr was supposed to point at waitVblank function but it does not. Using Hex editor(the one built in FCEUX), I found the waitVblank code at $B502, but jsr points at $9544...
The GFX_Load have several graphics files included, they cross Bank0 and Bank1 boundary.
Sorry, to be such a pain...it's probably my mistake somewhere...I can send you a source files via PM, if you want.
Re: MagicKit assembler new unofficial version
While I have posted a new version a few months ago I forgot to update this forum thread. Here is a partial list of changes:
Note that it is possible to do "compile time debugging" using macros, such as the following:If you want the output in hexadecimal, please replace macset 1,4,\1 wth org \1 (in which case the fail message will be the expression and the address printed to the left is the value; with the MACSET it will print the current address to the left and the value in decimal format on the right).
- A few new ports for use by the postprocessor/custom-output-routine (now it is possible to compile code while the postprocessor is running, if you are careful!)
- Some new MACSET subcommands
- A few bugs with writing NES 2.0 headers have been fixed
- Some other bug fixes (I forget the details now)
Note that it is possible to do "compile time debugging" using macros, such as the following:
Code: Select all
macro compile_time_debug
if ?X
macset 1,4,\1
fail \1
endif
endm
[url=gopher://zzo38computer.org/].[/url]