Dennis Duda
8adb2b83c8
DoResurrect is now binary exact
8 years ago
Dennis Duda
84120afd83
Cleaned up CheckSpell and CastSpell, now both binary exact!
8 years ago
Dennis Duda
6776b568c0
`GetManaAmount` is now binary exact
8 years ago
Dennis Duda
0b5aef5edb
`PlaceGroup` is now near binary-exact
8 years ago
Dennis Duda
8bd518031b
Added `LIGHTSIZE` constant
8 years ago
Dennis Duda
5de0a5083b
`PlaceUniqueMonst` is now near binary-exact.
...
It's just the both struct pointers that seem to load a bit differently.
8 years ago
Dennis Duda
0f0bb1c713
`PlaceMonster` is now binary exact
8 years ago
Dennis Duda
7c75240c1e
`MonstPlace` now binary exact.
8 years ago
galaxyhaxz
20ad6eb218
Fix signature of diablo_find_window ( #187 )
...
Byte identical now
8 years ago
Andrew Dunstan
e0fab6a6d1
fix type definition of itemhold, avoids overrun into Item2Frm (crashes when byte_641234[] is stripped by compiler due to being unreferenced)
8 years ago
galaxyhaxz
56d57d61c5
Update player.cpp
8 years ago
galaxyhaxz
f49117c95a
Update monster.cpp
8 years ago
galaxyhaxz
3b90e56429
Update player.cpp
8 years ago
galaxyhaxz
704380756d
Update player.h
8 years ago
galaxyhaxz
1120c0780d
Update sound.cpp
8 years ago
galaxyhaxz
0a1dcc5c0f
Update missiles.cpp
8 years ago
galaxyhaxz
9f206691b0
render.cpp -> undo memset/memcpy ( #186 )
8 years ago
galaxyhaxz
5ed7a29e22
render.cpp -> implement memset/memcpy
8 years ago
Dennis Duda
ad59011c64
Shuffled things around in `InitMonster` to make the ordering closer to the beta, and making it binary exact
8 years ago
Dennis Duda
ad0bf6acfc
Cleaned up `InitMonsterGFX` by changing the signature of LoadMissileGFX to fit.
8 years ago
Dennis Duda
16a576cd5b
Brought `GetLevelMTypes` very close to binary exact
8 years ago
Dennis Duda
cf81adbd47
Minor adjustments to `InitLevelMonsters` and `AddMonsterType`
8 years ago
Dennis Duda
4461f657c3
Made `InitMonsterTRN` binary exact.
8 years ago
Dennis Duda
91b6568ef9
Fixed CheckInvCut to be binary exact now with the new compiler version
8 years ago
Dennis Duda
f5a4d0a2ec
Reordered assignments in `NewPlrAnim` to be closer to the beta. Still binary exact with the new compiler
8 years ago
Dennis Duda
2f2d519ec7
Added missing enum values, removed codegen TODOs (fixed with new compiler) - now binary exact!
8 years ago
Dennis Duda
d45a175064
Fixed `CreatePlayer` to now be binary exact!
8 years ago
Dennis Duda
0ba52840b4
Use `UINT64` instead of `unsigned __int64`, more in line with uses of `DWORD`
8 years ago
Dennis Duda
0508308eba
Fixed missing cast for literal `1` to UINT64
8 years ago
Dennis Duda
22718733d0
Fixed nasty bug in `CalcPlrItemVals`, now binary exact!
8 years ago
Dennis Duda
07b5dc3939
Cleaned up `inv_update_rem_item`, `RemoveInvItem`, `RemoveSpdBarItem`, `CheckInvItem`, `CheckInvScrn`, `CheckItemStats`
...
All relatively simple and/or use code from other functions already cleaned up. Now binary exact except for the small codegen differences outlined in https://github.com/diasurgical/devil-nightly/issues/15
8 years ago
Dennis Duda
a061f6d6f0
Cleaned up `CheckInvSwap` (0x3B6 → 0x390, orig: 0x373)
...
Pretty close to the original binary except for the first loop, which generates differently. (TODO comment added) There are also some questionable double address calculations, which hopfully clear up when the loop is fixed as well.
Also added enums `inv_body_loc` and `inv_xy_slot` to clean up a lot of magic numbers.
8 years ago
Dennis Duda
2f25466ed6
Cleaned up `CheckInvSwap`
...
Now binary exact except for the usual `xor; inc` vs `push 1; pop` switch.
Updated the type of `_iIdentified` to `BOOL` as well (since every write to it actually is 0 or 1).
8 years ago
Dennis Duda
4120348056
Switched all pre-increments to post-increments, added some spacing
8 years ago
Anders Jenbo
e750efcfce
Clean up NextPlrLevel
8 years ago
galaxyhaxz
d991f63b16
Fix type of screen_buf_end ( #184 )
8 years ago
galaxyhaxz
8381807e90
Fix data type in gendung ( #183 )
8 years ago
Anders Jenbo
2e383d6810
Minor clean ups for player.cpp
8 years ago
Dennis Duda
b6baa965bb
Revert "Switched back `NewCursor` to the original name `j_SetCursor`"
...
This reverts commit 4c93cca082 .
NewCursor was the actual name, j_<function> are just remaining
reversing names
8 years ago
Dennis Duda
0b29cbb97b
Reverted `MAX_PLRS` to raw literal without unsigned annotation
8 years ago
Dennis Duda
4c93cca082
Switched back `NewCursor` to the original name `j_SetCursor`
8 years ago
Dennis Duda
565a4b8bce
Flipped back the leveltype check
...
:S
8 years ago
Dennis Duda
9e18f07d5b
Cleaned up the if branches further, removed `pAnims` var so that register and instruction generation comes very close
8 years ago
Anders Jenbo
cd99c0b800
Clean up player.cpp SetPlrAnims
8 years ago
Dennis Duda
3577cfe747
Reordered switches to normal order
8 years ago
Dennis Duda
5d1dd0e934
Added enum value for `_iCurs` assignement
8 years ago
Dennis Duda
45303c98b1
Updated cleanup of `CreatePlrItems`:
...
- Now 99% accurate (can't get the last `GetPlrHandSeed` call in the switch to optimize the way it is in the binary, TODO for that added)
- Switched `_ui_classes` enum members out with `plr_classes` ones
- Added TODO tags for missing debug logic from the 1.00 build
8 years ago
Dennis Duda
84617bc1cc
Cleaned up `CreatePlrItems`.
8 years ago
Dennis Duda
9770783f41
Cleaned up `CreatePlayer` to be only one instruction off!
...
The devilution code generates one additional `cdq` instruction, the rest is perfect...
8 years ago
Dennis Duda
4ae7211fa0
Cleaned up `CreatePlayer`.
...
This is now as close as it gets without switching to enum types/parameters everywhere, so the compiler can optimize all accesses/checks accordingly. This is especially noticeable in the way the code for the switch is generated (line 775). In the original binary you can see it does weird stuff if c is not one of the classes' enum value (probably due to optimization since the switch should be exhaustive).
I've tried switching the type of c to _ui_classes, also removing the UI_NUM_CLASSES value to see if that'd be enough to let it generate the optimized code, but nope, seems like we need to change it all at once. Currently, _pClass is a char, but an enum value would fit there as well, size-wise (alignment).
That's also why I'm guessing there had to be another enum for player classes, without the UI_NUM_CLASSES value...
8 years ago