Originally posted by Austin
Xkas [...] isn't outdated
Originally posted by my profile
List of xkas v0.06 bugs I know of (please PM me if you know of any other bugs):
- incsrc thisfiledoesntexist.asm crashes instead of just printing an error.
- !x = xxxxxxxxxxxxxxx : !x = xxxxxxxxxxxxxxxxxxx overflows a buffer and crashes.
- The % operator acts very strangely. xkas seems to think it's a number. I haven't found a way to work around this, but luckily that operator is rarely needed.
- PEA Labelnamehere doesn't work. This made PER $0006 more common than it needs to be, but I appear to have made people use PEA.w Labelnamehere instead.
- !x = $19 : LDA !x refuses to assemble. Splitting it to two lines solves it.
- LDA $0AB5+1 assembles to AF B6 0A 00, not the expected AD 0A B6.
- LDA Label is treated as LDA.l, even if the label is in the same bank.
- REP 0 assembles the instruction after it once, not never. A workaround is REP -1, or any other negative number.
- Garbage in table files doesn't print any errors; instead, it gives various very strange results. "AAAAAAAAAAAAA" is ignored, and "Awesome garbage 'n' shit=42 FLYING HIPPOTAMUSES" acts like "A=42". To make it even stranger, every eighth digit is OR'd together, so "A=81FFFFFF18" acts line "A=99".
- level10:!Freeram = $13E6 defines a label containing invalid characters. No error is printed (until the label is referenced).
- .derp: defines another inaccessible label. No error is printed.
- LDA.B #$42 refuses to assemble since the .b is case sensitive.
- The documentation mentions that only 512 incsrc's may be inside each other. This is fully acceptable, but the truth is less acceptable: Only 512 incsrc's may exist at all. Anything above that makes xkas crash.
- LDA $#01 is treated as LDA $01 for some crappy reason.
I guess it depends on how you define "outdated". It is a pretty tricky word.
Originally posted by miguel21450
I prefer xkas, since it's more easier to insert patches than Asar.
I find it easier to not have to worry about freespace than having to worry about freespace, but I guess you've got some arguments in the other direction.
Originally posted by Ripperon-X
When you insert a patch that's places in a certain location, once you insert it again, the patch will be put in a different location.
I'll fix this as soon as I can figure out how to do it, both in-patch syntax and how to detect where it should be.
Originally posted by Lui37
To fix that you'll simply need to type autoclean before the JML or JSL.
Not failproof. Asar slightly overestimates its freespace need, and while it does fix this later, it thinks its previous freespace is too small the second time the patch is assembled (assuming the byte after it is used, which is pretty much guaranteed if anything is done in LM between the assembling rounds).
Originally posted by wiiqwertyuiop
Asar is more for SMW
The only SMW-isms in Asar are usage of RATS tags and being hardcoded to not look for freespace in the first 512KB. RATS tag metadata (used by prot
) is Asar-only (but designed to be usable by other tools as well), and I replaced the SUPER MARIOWORLD check with a heuristic for whether the ROM name is readable long ago (see lines 153 to 171 in interface-cli.cpp for details). (Yes, the string SUPER MARIOWORLD still exists in libsmw.cpp, but it's not used by Asar.)
and xkas is the standard for most other rom hacking boards
Yeah, I can't fix that. Getting it accepted around here is hard enough, I'm not going to attempt to push it onto others as well.
I'm also not familiar with asar's syntax, but i'm told its about the same as xkas's.
Correct. The easiest mistake is that Asar attempts to optimize label access, so if you forget a bank
command or .l
, you'll get weird results. There's also a bunch of minor differences and additions, but I believe all differences will throw warnings.
Originally posted by Ultimaximus
But what ever happened to all those other versions, such as xkas v1x, bass
These two are pretty much the same (bass is xkas15+).
The syntax is pretty different, and the command line is a bit more complicated as well (at least for the latest bass, not sure about xkas14).
I think they died before becoming usable, and considering how buggy xkas6 is, I doubt SWR would be able to kill all bugs.
(and I think p4 might have had one)?
Correct, but he said he dropped that in favor of Asar, since Asar came first and has a feature set that matches his demands.
It's not a matter of syntax if xkas, asar, and bass are all incompatible with each other
I can't claim that Asar is identical to xkas, but it attempts to stick pretty close to it, and some of the simpler xkas patches work in Asar without modification (if you set freespace). bass requires lowercasing everything and replacing the entire macro/define syntax, which is a much more complex operation.
Originally posted by HuFlungDu
I'm working on it.
It's still a dismal number of converts though.
Originally posted by Shog
I'm pretty sure Alcaro would update Asar or fix a glitch...
Correct. I'll fix all bugs I can find.
But I don't find many these days. I guess most of them are gone already.
<blm> zsnes users are the flatearthers of emulation