Difference between revisions of "Gob/TODO"

From ScummVM :: Wiki
< Gob
Jump to navigation Jump to search
(Moved TODO from repository)
 
m (Markup)
Line 11: Line 11:
This is all bad. Whole game tries to read structures directly without parsing them.  
This is all bad. Whole game tries to read structures directly without parsing them.  
Problems which it arises:
Problems which it arises:
  * sizeof(struct) is bigger than sum of sizes of its elements on most systems due to alignment. This is why it crashes now
* sizeof(struct) is bigger than sum of sizes of its elements on most systems due to alignment. This is why it crashes now
  * Endianness is not honoured
 
* Endianness is not honoured


What we should do here is get rid of both data_openData and data_readData()
What we should do here is get rid of both data_openData and data_readData()
Line 33: Line 34:
This will let us get rid of file_open() too which is an implementation of  
This will let us get rid of file_open() too which is an implementation of  
an ugly idea.
an ugly idea.


== Main and long-term goals ==
== Main and long-term goals ==

Revision as of 13:43, 23 March 2005

Showstoppers

Assignee: Carthag I am going to work on this, this Sunday. I will initlally confine myself to game.cpp, and then start migrating the changes to wherever the files are accessed.

It crashes now in game.cpp function game_loadExtTable() at data_readData().

This is all bad. Whole game tries to read structures directly without parsing them. Problems which it arises:

  • sizeof(struct) is bigger than sum of sizes of its elements on most systems due to alignment. This is why it crashes now
  • Endianness is not honoured

What we should do here is get rid of both data_openData and data_readData() and write function with this prototype (give it proper name):

  MemoryReadStream data_getData(const char *filename, const char *chunkname);

It will read whole named chunk and return a stream of it. So code using it will look as follow:

 chunk = new data_getData("intro.stk", "intro.tot");
 foo.a = chunk.readUint32LE();
 chunk.read(foo.b, 20);
 delete chunk;

MemoryReadStream will track end of chunk by itself, so no additional code is needed.

All places should be revisited and rewritten as every one will cause problems.

This will let us get rid of file_open() too which is an implementation of an ugly idea.

Main and long-term goals

  • Make thing work
  • Convert it to C++ classes. This should be done on per-file basis and keep in mind
 that we should make it to resemble original code al little as possible.
  • Endianness fixes


video.cpp

Assignee: Ender is working on these

  • Proper video initialization
  • Get rid of DriverInterface and implement respective functions
  • Support for all rendering modes i.e. VGA/EGA/CGA/Hercules

util.cpp

  • Implement keyboard input functions
  • Mouse input

text.cpp

  • This file should be removed and is not currently required for compilation
 but we need to inspect which variables does it set and to which values and
 convert them to our Config Manager. We should support all video outputs
 and at least PC speaker and Adlib.

sound.cpp

  • Has yet to be written from sound.asm

gob.cpp

  • Write proper game detection. (MD5-based?)