**Full explanations for what the opticodes will do is in the making***
Come up with any opcodes you can think of, and if I manage to be here and see an interesting or creative one I'll add it to the list.
With the new "AZM chip" I created (similar to SuperFX), you now have some new special opcodes, and registers to go with the old normal
ones! Very useful too! Also the chip limits you to only being able to have an 8mb rom, no more or less. I have made a new version of
xkas specially for this.
Where ever I put "value" it just means I could have something like #$0A or $15BF or #%10100010 etc. It can also just be "A" or "X" or
DES - Desired Effect Set - One of the highest points of this new chip. If you're doing some kind of complicated ASM math circling
windowing HDMA thing, this can automatically very accurately "assume" your wishes and activate that effect. Very useful. With this code
using DES I managed to get an interesting effect I've always wanted to do with multiple mode 7 rotations and unlimited sprite slots
with no slowdown.
LOL - "value" Of "value" (aka "value" squared) - Mostly just for advanced math usage and some mode 7 things (superfxDX is included
which allows 3D imaging and animation like in Brawl, 2D-3D gameplay.)
ROF - square Root OF "value" -
PIX - load true random number into "value"
LSE - "value" divided by Pi
FOS- Fake Opcode for Sale - Using this opcode for the first time in conjunction with a ram address will load that address every time it's used afterwards.
WOI- Won't Officialy Imitate - Used to replicate the previous X opcodes, won't always work. You must load a value into x register to tell it how many bytes to imitate.
WOI Soup,x ;Imitate 4 opcodes appearing at "Soup"(So store #$01 to $19, but only sometimes)
PIE - "value" multiplied by Pi
WUT - Wait for Usage of Time ;AKA Timers made easy (none of the BCC BCS crap)
ROY - ROtate Y index - Basically if you have a table in Y it shifts it to the right one space. More on usage later
ETC - Working on this opticode's usage
WAT - WAit for Transfer
SLP #$button - Halts the SNES and reduces power consumption until one presses the button(s) specified. You must LDA $16/$18 depending on the buttons to check.
NEU - NEUtralize opcode - Use this if your code glitches but you have no clue how to fix it. The closer you can get it to the broken code (it can appear before or after) the more likely it can fix it.
WYE - Wait for Y index to Exceed.
MUT - "value" multiplied by "value"
LDA #$06 ;load 6 hex
MUT A ;A squared, since it was 6 hex it becomes 24
STA $29 ;Mario now looks funny
You can also just do this...
MUT $19 ;Multiply contents of $19 by itself (let's say it's #$02) and store it back. We now have #$04 loaded and Mario looks funny
XCL - "value" multiplied by "value-1" then multiplied by "value-2" till it's multiplied by one. (AKA A!)
XKA - Disassemble - First you store values to RAM, they'll be the hex translation of opcodes. And you then load ramtable,x (ramtable,a
would work now too) with the XKA command and it will execute those opcode's translations. ASM must be used after this for as long as
you wish to repeat the code. But be warned, if a value changes in the RAM table it'll still keep running... Also this is often used
with the Super Register to avoid the possibility of a changing RAM address.
LDX #$08 ;How many bytes the translated hex take.
TAS ;take A into S
XKA S ;Run the code of those opcodes if they were translated.
ASM - Assemble - Stop the effect of XKA
BTW - Working on this opticode's usage
WTF - Working on this opticode's usage
BBQ - Branch Because i said so, no Questions asked
SNN - changeS "value" to a new value that is Not Normally functional
- In other words, Summon "value" Ninety-Nine times
DMP - DuMP spc, aka it just changes music to the song number you want, no bank restrictions and it can dump spc files in the same
folder as the rom with perfect quality (the azm chip installs most different types of spc programs from other snes games)
RLD - Really Load Data, use directly after DMP so it actually loads the spc and plays it, otherwise you just loaded a huge table of
bytes which would be assembled spc data.
GOD - The opcode that does anything.
HEL - An interrupt vector, do not use.
ABV - Will spawn the perfect game depending on user. It includes 3D imaging and animation. Sorry, only 2 of the other opticodes support
the 3D right now. DES and GOD.
NON - Working on this opticode's usage
ANA - Working on this opticode's usage
AKA - Working on this opticode's usage
New registers for advanced loading and storing /etc!!!
In addition to the old A/X/Y registers, you now have the special registers "U/L/E/S"
A - This register stays normal (it doesn't do anything new, you can just still do anything you were able to do with it before)
X - This register stays normal
Y - This register stays normal
S - Super Register
L - 16-Bit Register
U - 8-Bit Register
E - All Registers Simultaneous
O - Zero Register
Now before I type in an explanation of what those all do, here's an example of usage.
LDA $1337 ;Load the contents of $1337
LOL A ;Multiply A ($1337) by itself (square it)
can't be shortened to
LOL $1337 ;Multiply $1337 by itself (square it) and store it back to itself because it isn't A
now let's add to that
LDA $1337 ;Load $1337
LOL A ;Multiply A by itself
TAL ;Take A into L (all these commands are added for the registers and I'll list them soon)
ROF L ;Square Root L in 16-bit
TLA ;Take L into A
;A is now the exact same. But let's explain this. There is a special "Estimation" binary bit made with this patch that will save an
estimation to restore values back to what they were, incase you end up with something like 2.9999 repeated and such. It basically sort
of makes very accurate assumptions.
Yes this is all fake, and the opticodes spelling can be set up to spell stuff.
LSE X ;Divide "value" by Pi
LDS #$7F1920 ;Super Register in action, this is really loading the RAM address from the single frame it loaded it from. Basically what
this does, you load #$xxxxxx which must include the bank in any case. That's really a RAM address for the frame you load it. It'll now
have that value. But if $xxxxxx changes to some other value, "S" will still have the previous one it first loading on that one frame.
LSE X ;Divide "value" by Pi
XKA S ;Disassemble "S" (notes on what this disassemble opticode does soon)
This is basically just a funny idea I had which I complicated like hell. I tried to come up with things that ASMers would wish for, or
some non existing commands at least.
I own a community of TF2 servers
ASMT - A new revolutionary ASM system, aka 65c816 ASseMbly Thing
SMWCP - SMW Central Presents a Product- tion long name