Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
This is by no means complete, but it's a good start. It is based on an
earlier discussion on the subject, and it allows us to use the highest
two bits from the segment for offset addresses
|
|
|
|
This is needed for future support of large SCI3 scripts. The program
counter is isolated and does not interfere with other parts of the VM,
plus it does not get stored in saved games, so it's pretty straightforward
to convert
|
|
No functionality change has been made with this commit. This avoids
setting and getting the reg_t members directly, and is the basis of any
future work on large SCI3 scripts (larger than 64KB)
|
|
|
|
|
|
- Folded all comparison operators in a single function, cmp()
- Simplified the + operator, and removed the SQ1 workaround, as it's not
needed anymore
- Removed the workaround for uninitialized variables in the * operator
- Removed division by zero workarounds in the / and % operators
- Added a better description of pointerComparisonWithInteger(), based
on fingolfin's description and comments. Also, changed the SCI versions
where this is used to SCI0-SCI1. The SCI1.1 case in QFG3 was a script
bug
|
|
|
|
This version only handles signed integers. The modulo operator was changed in
SCI0 late (Iceman, and perhaps all SCI0 0.000.685 and later) so that it handles
negative numbers as well. We need to see if there really is a need to keep two
different modulo operators (which will only be necessary if any SCI0 game asks
for the modulo of a negative number by mistake, or a number larger than 32767).
Thus, error out in such a case for SCI0, so that this can be investigated
properly
|
|
This refactoring reduces a lot of code duplication, allows for better control,
makes the code more readable and allows us to remove a lot of now unneeded
workarounds
|
|
Removed validate_arithmetic(), signed_validate_arithmetic(), validate_unsignedInteger() and validate_signedInteger()
|
|
svn-id: r51726
|
|
Would be nice to use this constant in pre-existing code.
svn-id: r50577
|
|
- Added a saveLoadWithSerializer() method to the reg_t class
- Moved SegManager::reconstructClones() inside savegame.cpp
- Moved SoundCommandParser::syncPlayList() and SoundCommandParser::reconstructPlayList() inside savegame.cpp
svn-id: r49683
|
|
svn-id: r44533
|
|
callers cannot modify NULL_REG accidentally anymore
svn-id: r44531
|
|
(usually), or to signal success in some special occasions
svn-id: r44505
|
|
and fixed the arbitrary 0 values from commit #44294, set when some math functions do invalid calculations
svn-id: r44359
|
|
i.e. 16-bit integers, instead of 32-bit ones
svn-id: r44302
|
|
indicate an invalid segment
svn-id: r44131
|
|
VIEW_PRIORITY and PRIORITY_BAND_FIRST wrappers
svn-id: r41338
|
|
svn-id: r40767
|
|
now); switched MemObject to subclass Common::Serializable
svn-id: r40714
|
|
svn-id: r40356
|
|
string frags. Also added a 'typedef reg_t *StringFrag' for future use
svn-id: r40355
|
|
svn-id: r38961
|
|
include/engine.h remains
svn-id: r38920
|