Commit Graph

185 Commits

Author SHA1 Message Date
nmlgc 536e17d29e [Reduction] #367-368: file_seek and file_tell 2014-08-30 09:21:44 +02:00
nmlgc 5976ec0458 [Reduction] #366: file_ropen 2014-08-30 09:12:17 +02:00
nmlgc 3ee280b708 [Reduction] #365: file_read 2014-08-30 09:00:31 +02:00
nmlgc 649ab800e1 [Reduction] #364: file_exist 2014-08-30 08:46:38 +02:00
nmlgc 2e814fc3c5 [Reduction] #363: file_create 2014-08-30 08:32:10 +02:00
nmlgc 9a1e030ce7 [Reduction] #361-362: file_flush and file_close 2014-08-30 08:19:17 +02:00
nmlgc 605f044854 [Reduction] #359: File-related global data 2014-08-30 07:49:51 +02:00
nmlgc 04b1fd3bcc [Reduction] #355-356: ctor2.asm
OK, looks like we got all of the C++ crap out of the way... e~xcept for
another function in TH01's REIIDEN.EXE, of course.

[Binary change] Order of 2 relocations in TH01's FUUIN.EXE.
2014-08-30 03:50:38 +02:00
nmlgc 73af48ac95 [Reduction] #352-354: ctor3.asm 2014-08-30 02:37:53 +02:00
nmlgc be740fc368 [Reduction] #331-351: strings.cpp
God, this C++ stuff really is a crappy mess. Even had to manually adjust the
alignments at the end of the the TEXTC segment - and no, the ALIGN directive
remains an inadequate tool random bytes, even more so because TASM's
implementation just pads the space with random bytes. But hey, nice to finally
see some reduction outside of seg000.

[Binary change]
* Order of 3 relocations in all of TH04 and TH05's OP.EXE
* Order of 6 relocations in TH03's OP.EXE and MAIN.EXE, and TH05's MAIN.EXE
  and MAINE.EXE
* Order of 9 relocations in all of TH01, TH02's OP.EXE and MAINE.EXE, and
  TH03's MAINL.EXE
* Order of 11 relocations in TH02's MAINE.EXE
2014-08-29 12:47:43 +02:00
nmlgc 588ed7b90b [Reduction] #324-330: new.cpp
[Binary change]
* Order of 2 relocations in all executables of TH02, TH03, TH04 and TH05
* Order of 4 relocations in TH01's FUUIN.EXE
* Inserts a new relocation into TH01's REIIDEN.EXE
2014-08-29 10:50:30 +02:00
nmlgc d49fdce731 [Reduction] #274-323: xx.cpp
Yup. 50 functions in a single module, totalling 12,633 bytes, used in all 15
game executables, and no references to any of that in the remaining game code.

[Binary change]
* Order of 3 relocations in all of THO3, TH04 and TH05, TH02's MAIN.EXE and
  MAINE.EXE, and TH01's OP.EXE and FUUIN.EXE
* Order of 2 relocations in TH02's OP.EXE and TH01's REIIDEN.EXE
* Inserts a new relocation into TH03's MAIN.EXE
2014-08-29 08:03:21 +02:00
nmlgc e2ca057d4b [Reduction] #273: cputype.asm
Don't have the source code for that one either.
2014-08-29 05:58:32 +02:00
nmlgc dd400d7627 [Reduction] #268-272: xmsg.cpp
[Binary change] Order of 6 relocations in every executable except for the TH04
ones.
2014-08-29 04:02:38 +02:00
nmlgc e0762650c6 [Reduction] #264-267: xalloc.cpp 2014-08-29 03:24:39 +02:00
nmlgc e1d78d0e9a [Reduction] #260-263: xxas.cpp
Well. Even after downloading pretty much every (identical) copy of Turbo /
Borland C++ 3, 4, 5 and everything inbetween, I could *not* find the original
source to most of the C++ parts in the runtime. Using the IDA disassemblies
to build their slices is simply the only option.

... Really, though, who cares.
2014-08-29 03:08:23 +02:00
nmlgc a9918e364e [Reduction] #259: C++ delete[] operator
Same for registerbgifont() being a wrapper around registerfarbgifont(). But
at least there, IDA should have noticed something weird. The original delete[]
operator refers to the delete function, so registerbgifont() would have had to
be a wrapper around registerbgidriver(), which of course doesn't make sense,
and IDA claims to *know* these functions...
2014-08-29 01:35:20 +02:00
nmlgc 0493c0c4e4 [Reduction] #258: C++ delete operator
Lol, "registerbgidriver". Just because the original function is nothing but a
wrapper around free(), and registerbgidriver() is also just a wrapper around
registerfarbgidriver().
2014-08-29 01:26:20 +02:00
nmlgc 6ebf0877f7 [Reduction] #257: xfflush 2014-08-28 21:54:04 +02:00
nmlgc 0c8e9d8550 [Reduction] #252: 16-bit sine and cosine table
Nice! It's not used by master.lib itself, but ZUN makes good use of these
tables to avoid having to rely on floating-point functions.
2014-08-28 07:54:38 +02:00
nmlgc eb6c0b5551 [Reduction] #246: grcg_boxfill 2014-08-28 05:31:57 +02:00
nmlgc 55629eecb0 [Reduction] #234-239: super_put
[Binary change] Order of 3 relocations in TH05's OP.EXE, and 2 relocations in
TH05's MAINE.EXE.
2014-08-28 02:23:54 +02:00
nmlgc 68359542c1 [Reduction] #233: Byte mask 2014-08-28 01:37:48 +02:00
nmlgc 2cf62174c0 [Reduction] #232: graph_start 2014-08-28 01:16:54 +02:00
nmlgc 9b3e42a150 [Reduction] #230: graph_400line 2014-08-28 00:58:40 +02:00
nmlgc 0dad2dffc8 [Reduction] #228: grcg_hline 2014-08-28 00:17:57 +02:00
nmlgc 523da7f7b9 [Reduction] #227: Edge pattern table 2014-08-28 00:05:06 +02:00
nmlgc 877fbd8bd6 [Reduction] #225: Clipping variables for drawing
Well, great. Why did the trapezoid variables have to be included in this
object file? 10 of the executables don't use them, and there's no way to
locate that one needle in the haystack of uninitialized data now.
2014-08-28 00:04:26 +02:00
nmlgc 5a05e580e5 [Reduction] #223-224: memmove 2014-08-27 19:47:14 +02:00
nmlgc f3e9147459 [Reduction] #221-222: memset
Two functions, just differing in their order of parameters. It's...
convenient, I guess?
2014-08-27 07:50:37 +02:00
nmlgc 444901acb5 [Reduction] #220: memcpy 2014-08-27 07:15:15 +02:00
nmlgc 39bf07ac61 [Reduction] #219: memcmp 2014-08-27 07:05:29 +02:00
nmlgc 4f075e1718 [Reduction] #217-218: grcg_setcolor and grcg_off 2014-08-27 07:05:16 +02:00
nmlgc aa9ea36277 [Reduction] #215-216: graph_copy_page 2014-08-27 06:13:48 +02:00
nmlgc a28cd273c4 [Reduction] #214: graph_clear 2014-08-27 06:03:08 +02:00
nmlgc 199138182a [Reduction] #213: Graphic VRAM-related global data
Nothing in the BSS segment for once! Yay.
2014-08-27 05:45:01 +02:00
nmlgc 967a8e3aa5 [Reduction] #212: graph_show
ReC98, where a function consisting of 3 instructions still saves over 150
lines.
2014-08-27 05:19:11 +02:00
nmlgc a4de9710bd [Reduction] #211: make_linework 2014-08-27 05:05:30 +02:00
nmlgc 7240b80154 [Reduction] #209: pfclose 2014-08-27 03:11:13 +02:00
nmlgc 27693992d9 [Reduction] #208: bopenr
Had to explicitly specify "byte ptr pferrno" for binary compatibility...
2014-08-27 02:54:57 +02:00
nmlgc 64609699ef [Reduction] #207: PAR-related global data 2014-08-27 02:40:09 +02:00
nmlgc ef64c51958 [Reduction] #205: palette_white_in
No nopcalls for a change?
2014-08-27 00:52:29 +02:00
nmlgc beae93b603 [Reduction] #204: palette_black_out 2014-08-27 00:33:43 +02:00
nmlgc 8b6d81a3de [Reduction] #203: palette_black_in 2014-08-27 00:26:46 +02:00
nmlgc 80cbfb1dd8 [Reduction] #202: vsync_wait 2014-08-27 00:11:29 +02:00
nmlgc 94c5a12100 [Reduction] #198-201: vsync_start and vsync_end 2014-08-26 23:58:08 +02:00
nmlgc 287d7ea554 [Reduction] #197: VSync-related global data
[Binary change] nop → db 0 after the data declarations in every affected
executable.
2014-08-26 22:52:26 +02:00
nmlgc 1f804283f8 [Reduction] #196: bseek_
With underscore. Seek origin as a separate parameter.
I'm... sure there is a reason?
2014-08-26 22:15:00 +02:00
nmlgc ed6c5e3067 [Reduction] #195: bseek
Without underscore. Relative seek.
2014-08-26 22:04:11 +02:00
nmlgc c60e71aa12 [Reduction] #194: text_fillca 2014-08-26 22:02:09 +02:00
nmlgc fae5f003ad [Reduction] #193: bread
This function doesn't seem to be used outside pfopen(), and IDA struggles with
that function, which explains the missing references.
2014-08-26 21:34:06 +02:00
nmlgc 5d2d4feca0 [Reduction] #192: bgetc 2014-08-26 21:23:54 +02:00
nmlgc 40de176f2c [Reduction] #191: bcloser 2014-08-26 20:54:57 +02:00
nmlgc 54c9abefee [Reduction] #160: getdcwd 2014-08-23 18:42:30 +02:00
nmlgc 4a36dd15de [Reduction] #159: super_entry_bfnt
[Binary change] Order of 5 relocations in TH05's MAIN.EXE.
2014-08-23 18:09:23 +02:00
nmlgc 656f993e8d [Reduction] #158: bfnt_palette_set 2014-08-23 16:56:01 +02:00
nmlgc 6e6293be79 [Reduction] #157: palette_init 2014-08-23 16:18:30 +02:00
nmlgc e76a9948b8 [Reduction] #156: palette_show 2014-08-23 16:11:16 +02:00
nmlgc 61ccf52f3e [Reduction] #155: Palette data 2014-08-23 15:47:05 +02:00
nmlgc 138fcd2fce [Reduction] #153-154: Key beep control 2014-08-23 14:01:53 +02:00
nmlgc 6114c2871c [Reduction] #151: bfnt_extend_header_analysis
And here we have another TASM limitation: INCLUDE file names apparently are
strcpy()'d to a buffer with a fixed size of 32 bytes, causing a crash when
trying to include any file with a longer name. Quality.
2014-08-23 13:18:32 +02:00
nmlgc 20b998a428 [Reduction] #150: bfnt_extend_header_skip 2014-08-23 12:23:03 +02:00
nmlgc 7046c47d28 [Reduction] #149: bfnt_header_read 2014-08-23 12:08:48 +02:00
nmlgc 56a45d0b1d [Reduction] #148: bfnt_entry_pat 2014-08-23 11:51:14 +02:00
nmlgc c718cc159a [Reduction] #147: 4-bit VRAM pixel rotation table
[Binary change] Order of three relocations in TH05's OP.EXE and MAINE.EXE.
2014-08-23 03:16:07 +02:00
nmlgc 76139a57c8 [Reduction] #146: dos_axdx 2014-08-23 03:03:17 +02:00
nmlgc 50bd48da18 [Reduction] #143: dos_setvect 2014-08-23 01:38:22 +02:00
nmlgc ba3e077fc8 [Reduction] #140: dos_close 2014-08-23 00:48:48 +02:00
nmlgc 2e2151b592 [Reduction] #139: super_entry_pat
Heh, all the references to this function are still expressed in db opcode
form, because IDA couldn't process the self-modifying code in
bfnt_entry_pat(). That's almost practical in our case!
2014-08-23 00:28:05 +02:00
nmlgc 4e6ef3bd8d [Reduction] #138: super_entry_at 2014-08-22 23:56:33 +02:00
nmlgc 857c443b57 [Reduction] #137: super_free
... yeah, TH02's MAINE.EXE indeed seems to not free its superimposed data.
In case it even allocates any.

[Binary change] db 0 → nop in ZUNSOFT.COM.
2014-08-22 23:45:21 +02:00
nmlgc 22112eab6a [Reduction] #136: super_cancel_pat 2014-08-22 23:33:18 +02:00
nmlgc 587f109e6a [Reduction] #135: Superimposed pattern data
... It really shows that I forgot to compress the "db 0" statements in
2bd664c5e4.
2014-08-22 22:31:44 +02:00
nmlgc 8b32104540 [Reduction] #131-134: graph_pi_load_pack
Second biggest master.lib object right there... and apparently, TASM doesn't
support segment prefixes in EQU directives?

And yes, there really is no viable solution for both the NOPCALL problem (the
TASM manual states that these NOPs are inserted during single-pass assembly,
which we can't do) and the complementary jump sequences (which are only
inserted for forward references when specifying the JUMPS directive, which
doesn't seem to work for us either).
2014-08-22 21:15:44 +02:00
nmlgc 193ca02550 [Reduction] #130: ___write
Doing one of these C monstrosities a day seems like a good habit. And hey,
ZUNSOFT.COM has already shrunk by over a third.
2014-08-22 19:28:05 +02:00
nmlgc 4e9ad18af1 Move common directives and includes to a separate include file
Note that .386 needs to come before .MODEL, and is therefore not included in
ReC98.inc. Causes, um, weird label errors otherwise.
2014-08-22 18:01:06 +02:00
nmlgc 2d1dc1589c [Reduction] #128-129: __rtl_write and __write
Underscores and wrappers, hooray.
__write is not included in the widely available version of WRITEA.CAS, but
it's still part of the same object file.
2014-08-22 02:55:11 +02:00
nmlgc 216413d8a6 [Reduction] #127: lseek
Yup, gotta move all the "handle" definitions away first.
2014-08-22 01:55:05 +02:00
nmlgc aaa2d23fc8 [Reduction] #126: graph_pi_free
Huh, the compatibility NOPs extend to master.lib as well?
2014-08-22 01:39:42 +02:00
nmlgc c3202f4450 [Reduction] #125: hmem_lallocate 2014-08-22 01:19:52 +02:00
nmlgc 47781cd013 [Reduction] #124: smem_wget 2014-08-22 01:04:46 +02:00
nmlgc 7cde3a50ec [Reduction] #123: smem_release
Need to do this function before smem_wget() to keep the alignment identical.
2014-08-22 00:59:18 +02:00
nmlgc ea4db822ab [Reduction] #120-122: Heap memory functions
With even more misreferences in switch tables.
2014-08-22 00:17:53 +02:00
nmlgc 969990a819 [Reduction] #119: mem_assign_dos
Containing, again, fixes for misreferences in TH04.
2014-08-21 23:30:20 +02:00
nmlgc fc0ccd5e2b [Reduction] #117-118: mem_assign and mem_assign_all 2014-08-21 23:05:54 +02:00
nmlgc d270a625e5 [Reduction] #116: master.lib memory manager variables 2014-08-21 22:54:07 +02:00
nmlgc 99b9963082 [Reduction] #115: dos_ropen
AKA "fontfile_open()", and originally kept in FONTOPEN.ASM... yeah.
2014-08-21 22:09:18 +02:00
nmlgc 98bf9d9576 Change the name of the entry point to STARTX
Because it just so happens that master.lib's bfnt_header structure contains
an element named "START".
And huh, this suddenly works without changing any assembler or linker
parameters? I swear it didn't when I tried it first.
2014-08-21 22:05:17 +02:00
nmlgc 8e4683cd1e [Reduction] #109-113: Signal handling
> "OK, the signal slice is pretty large, let's do it tomorrow"
> stay there for the majority of the day

Oh well, at least it paid off. I *really* should work towards PI loading now,
though.
2014-08-21 21:28:18 +02:00
nmlgc d1ccecdfa9 [Reduction] #106-108: PC-98 EGC setup
"Enhanced Graphic Charger", hm...
2014-08-20 22:24:05 +02:00
nmlgc a244c30cd9 [Reduction] #104-105: _dos_getdrive and _dos_setdrive 2014-08-20 21:38:31 +02:00
nmlgc 69672b819a [Reduction] #103: DOSENV 2014-08-20 21:22:56 +02:00
nmlgc 8ca6964330 [Reduction] #102: ErrorMessage 2014-08-20 20:38:08 +02:00
nmlgc e6e1e3a937 [Reduction] #101: Far struct copy 2014-08-20 20:35:18 +02:00
nmlgc 68e1dc8596 [Reduction] #100: fflush 2014-08-20 19:46:47 +02:00
nmlgc 33fa958a30 [Reduction] #98-99: getvect and setvect
Yeah, getvect.asm also includes setvect(). They really could have chosen a
better naming scheme.
2014-08-20 18:09:26 +02:00
nmlgc ea547e4841 [Reduction] #92-97: exit 2014-08-20 17:53:02 +02:00
nmlgc 9d23be1a92 [Reduction] #91: stpcpy 2014-08-20 17:03:08 +02:00
nmlgc d3aaca7bd3 [Reduction] #90: text_clear 2014-08-20 16:45:24 +02:00
nmlgc eff96385b0 [Reduction] #82-89: PC-98 escape sequences
I don't know anything about ANSI/VT100/??? escape sequences, but after some
quick research, these sequences and their effect seem to be specific to the
PC-98 (although they're implemented as part of DOS, of course).
2014-08-20 16:27:28 +02:00