03-09-2018, 01:48 PM (This post was last modified: 09-11-2019, 10:36 PM by David.)
This is a simple front-end GUI for Kingcom's Armips program. This is useful for people who don't want to include the ".Open / .Close / .n64" in all of their Armips source files. This also includes the n64crc program, which will automatically update the ROM's checksum when you import a source file if the profile is set on "N64" or "N64 RSP". If you have ever used Tarek's CajeASM GUI, then this should be very familiar to you.
This program also includes 7 basic ASM examples for SM64 in the "/data/examples/N64/Super Mario 64" folder. There are 2 different versions of the examples, one that is just assembly code and the other which uses the SM64 Macro Library (sm64mlib). See the bottom part of this post for more information.
Note: You will need the 32-bit Visual Studio 2015 redistributable to run armips. If you don't have it, then you can download it here: https://www.microsoft.com/en-US/download...x?id=48145. Make sure to select "vc_redist.x86.exe".
Version 1.3.2
* Updated to latest version of armips (v0.10.0-48-g7aa5cba)
Version 1.3.1
* Fixed a bug with additional arguments not being concatted correctly. You should no longer have to add a space at the beginning.
Version 1.3
* Restructured File paths
* Added profiles for each of the different 10 architectures that armips supports.
* Updated to the latest armips build (v0.9-107-gc19500c)
Version 1.2 * You can now convert your assembly code to a SM64 Editor tweak in the new XML patch window.
* You can now manage the executable programs that get run when the "Assemble!" button is pressed. You can even run programs before Armips does.
* Moved the "Armips Readme" button to the main window.
* Added a checkbox in the settings window to enable/disable the "File assembled successfully to ROM." message after a successful assemble.
* Updated to latest armips build (v0.9-96-ge2610fe)
Version 1.1 * Added armips.exe updater, which was created by shygoo
* Added a button to take you to armips' readme file
* Slightly changed layout of settings menu
Version 1.0.4 * Updated to latest armips build (v0.9-85-g0cf6fdc)
* Updated sm64mlib to version 0.2
- Added new macros: .f3d_vertex, .f3d_dw, .f3d_loadTLUT, .CI4_palette
- Fixed up a lot of macros from levelscripts.asm, geoscripts.asm, and fast3dscripts.asm that were broken.
Version 1.0.3
* Updated armips.exe to latest build (v0.9-75-gc39eb76)
* Removed .asciiz macro in sm64mlib, because .asciiz is now natively in armips.
Version 1.0.2
* Added 2 new ASM examples.
* Updated sm64mlib to v0.1 (Minor changes to sm64functions.asm file)
* More armips psuedo instructions in examples and sm64mlib functions.
Version 1.0.1
* Added a new checkbox in the settings menu, which makes it so that the file-path of the ASM file is the root directory. This is enabled by default
* Fixed a bug where file-paths with spaces causes imports to fail
* Switch over to using n64crc.exe instead of chksum64.exe, due to chksum64 creating invalid checksums with some N64 games.
How to use the program:
Load up the ROM file
Load up the Assembly source file
Press the Assemble button.
If the import fails, then fix the source code according to what the error console says and go back to step 2
How does the gui work with armips.exe?
When the "Assemble!" button is pressed, the program will go through all the executables and run them in order. (see: "Managing Executables")
When the armips program is reached, it will create a temporary assembly file that will include the specified ASM file the user includes, along with any libraries that are enabled in the settings menu. The labels SAG_IMPORTPATH and SAG_FILEPOS are created to represent the variables that go into the ".Open" directive
Code:
// This is temp.asm
SAG_FILEPOS equ 0x0
SAG_IMPORTPATH equ "C:/Path/To/Rom/File"
.Open SAG_IMPORTPATH, SAG_FILEPOS
// Set armips to N64 mode
.n64
// Include any libraries the user specified in the settings menu
.include "C:/Path/To/Library/Include/File"
.include "C:/Path/To/Asm/File"
.Close
Settings:
Pressing the red gear icon in the top-left corner of the main window will open the settings menu. This menu will allow you to change some options like the RAM address that will be used when opening the file. This is where you can also enable/disable libraries to use with your assembly code. Right now only the SM64 Macro Library (aka: sm64mlib) will be included. If anyone else has some useful libraries, then let me know so I can include them in future releases. You can find the libraries under a profile's libs folder (/data/profiles/*/libs/) folder.
[Pre-Lib ASM] - Edit armips code that will be processed BEFORE libraries have been loaded
[Post-Lib ASM] - Edit armips code that will be processed AFTER libraries have been loaded
[Update armips.exe] - Looks up the latest build of the armips.exe program and gives you the option to download if available.
[Manage executables] - Manage all of the programs that will be run in order when you click the "Assemble!" button.
Managing Executables
In this window you can manage which programs will be run after you click the "Assemble!" button.
Disable or enable a process by using the checkbox on the right side
You can change the order by using the up/down arrows on the right side
Add a new reference using the "Add Executable" button on the top left.
Pressing the "Edit" button will allow you to change the program or delete the reference.
There are 5 special labels that you can use in the arguments line:
${ROM_FILE_PATH} is the path to the ROM file.
${ROM_FILE_SIZE} will output the size (in bytes) of the ROM file as a plain integer.
${ASM_FILE_PATH} is the path to the ASM file.
${FILE_RAM_ADDRESS} is the file RAM address specified in the settings window outputted as a hex integer.
${ARMIPS_ADDITIONAL_ARGUMENTS} is the line of text the user enters in the "Additional Arguments" window.
Creating SM64 Editor Tweaks
To convert your assembly code into a SM64 Editor Tweak, you only need to do the following:
Load a ROM file and the ASM file you wish to make into a tweak.
Click the "XML" button at the top-left corner of the window.
In the XML Patch window, select the "SM64 Editor Tweak" profile on the right side.
Type your description of the tweak inside the textbox.
Press the "Make XML patch" button on the top left of the window.
Navigate to the Tweaks folder for the SM64 Editor (/SM64 Editor/Data/Tweaks/)
Save the file, and it should now appear within the Tweak manager in the SM64 Editor.
SM64 Macro Library (v0.2):
sm64mlib was made to be a replacement for the defined SM64 functions file I made for CajeASM. The SM64 Macro Library adds a lot of custom macros to make programming much simpler. Compare the two source files below. They both do the exact same thing, but the sm64mlib version uses fewer lines of code. Please look through the .asm files in the /data/profiles/N64/libs/sm64mlib folder to see how the macros work.
Hello World ASM example (Armips 0.9+)
// [ARMIPS 0.9+] "Hello World" Example by Davideesk
.defineLabel func_printXY, 0x802D66C0
.orga 0x861C0 ; Set ROM address
.area 0x90 ; Set data import limit to 0x90 bytes
addiu sp, sp, -0x18
sw ra, 0x14 (sp)
la a2, 0x802CB250 ; Pointer to "Hello World" text
li a0, 0x60 ; x position
jal func_printXY ; call printXY function
li a1, 0x20 ; y position
lw ra, 0x14 (sp)
jr ra
addiu sp, sp, 0x18
.endarea
.orga 0x86250 ; 0x802CB250
.asciiz "Hello World"
Hello World ASM example (Armips 0.9+ w/ SM64 Macro Library)
// [ARMIPS 0.9 w/ SM64 Macro Library] "Hello World" Example by Davideesk
.orga 0x861C0 ; Set ROM address
.area 0x90 ; Set data import limit to 0x90 bytes
addiu sp, sp, -0x18
sw ra, 0x14 (sp)
// Prints "Hello World" at the screen pos (0x60, 0x20)
.f_printXY 0x60, 0x20, 0x802CB250
lw ra, 0x14 (sp)
jr ra
addiu sp, sp, 0x18
.endarea
03-11-2018, 05:00 AM (This post was last modified: 03-12-2018, 04:20 AM by David.)
Updated to Version 1.3
This update is smaller than the previous updates, but it involves a lot of changes with the file-system of the program. This was necessary to add the new feature of profiles.
These profiles are located in the local directory "./data/profiles/". There are currently 10 profiles for each of the different architectures that armips currently supports. Each profile will have its own individual save information including: the options in the settings menu, libraries, pre/post library assembly code, additional arguments, and executable file order. You can manually add or remove profiles by modifying the folders within the profile directory.
Note: n64crc.exe will now only be executed with the "N64" & "N64 RSP" profiles.
Changelog:
Restructured File paths
Added profiles for each of the different 10 architectures that armips supports.
Updated to the latest armips build (v0.9-107-gc19500c)