Skip to content

Files

Latest commit

095a109 · Apr 15, 2025

History

History
This branch is up to date with exult/exult:master.

tools

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Apr 15, 2025
Apr 3, 2025
Apr 3, 2025
Apr 5, 2025
Apr 13, 2025
Apr 5, 2025
Apr 3, 2025
Apr 5, 2025
Jun 21, 2000
Jan 1, 2024
Sep 23, 2024
Feb 10, 2024
Sep 23, 2024
Feb 17, 2025
Feb 17, 2025
Jul 10, 2000
Jul 10, 2000
May 2, 2002
Feb 10, 2024
Jun 20, 2005
Feb 10, 2024
Jan 1, 2024
May 2, 2002
Jan 1, 2024
Apr 5, 2002
May 2, 2002
Jan 1, 2024
Apr 5, 2002
May 2, 2002
Dec 18, 2024
Apr 5, 2002
Jul 10, 2000
Jul 10, 2000
Feb 10, 2024
Jul 10, 2000
Jan 1, 2024
Feb 6, 2024
Feb 17, 2025
Hello,

This .ZIP contains the following files:

README		This File
B.EXE		Decompiler by Maxim & Wody
MKLINK.EXE	Creates the link-dependencies U7 uses
RIP.COM		Rips usecode to little files, and builds usecode-file by Wody
WUC.COM		Usecode assembler by Wody
INTRINS1.TXT	List of used intrinsic functions for U7BG by Wody
INTRINS2.TXT	List of used intrinsic functions for U7SI by Wody
U7BGFLAG.TXT	Flags used with PUSHF/POPF for U7BG by Wody
U7SIFLAG.TXT	Flags used with PUSHF/POPF for U7SI by Wody
UCFORMAT.TXT	Format of Usecode-file by various people
SOURCE.ZIP	ZIP file of source for all programs included

Maxim is Maxim S. Shatskih, Email: maxim__s@mtu-net.ru
Wody is Wouter Dijkslag, Email: wody@wody.demon.nl
(more credits in UCFORMAT.TXT)

If you want to do anything with it, you need the usecode file from
Ultima 7: The Black Gate or Ultima7: Serpent Isle. With this file, you can then
create a list by running B.EXE, which shows it on your screen. To redirect it
to a file, use B > FILE, where FILE is the file you want it to.

This file has a lot of functions in it, in the form of:

            Number
Function #0 (0096H), offset = 00000000, size = 00a2, data = 005d

The most interesting part is number. If you run B with that number (B 0096)
you will get the source of that function, as far as is known. Off course, this
can be redirected too.

You can then change that function, and recompile it!

If you want to change a function, you first need to create compiled files and
an index file for all functions. You could do this by hand, but there is a
program for it, called RIP. You can rip a single function (RIP 0096), take all
functions out of the usecode (RIP ALL), only create an index (RIP INDEX), or
put all files and the index back together (RIP GLUE).

The compile is done by the program WUC. You run this by WUC infile outfile.
This means, if you have function 0096 written in file 0096.TXT, you need to run
WUC 0096.TXT 0096, but you could also write FUNCTION.TXT 0096 or something to
that effect.

If you just change a single function, and didn't change the size, you can put
it back with RIP PUT. Otherwise you have to rebuild the entire file with RIP
GLUE, and run MKLINK. When the usecode file is built, copy it over the old
version, and run U7. If you ran MKLINK, also copy the LINKDEP1 and LINKDEP2
files over the old versions. Then it's testing.. Don't forget to make backups!

Read the decompiled usecode to see how to program for U7. If you find out
anything (functions, meanings of opcodes, etc) which is unknown, or have any
comments, please tell Wouter so this package can become better!



Ultima & The Serpent Isle are trademarks or registered trademarks of ORIGIN
Systems, Inc.