diff --git a/Makefile.mak b/Makefile.mak index 97c7f400..2fd6dee7 100644 --- a/Makefile.mak +++ b/Makefile.mak @@ -73,7 +73,7 @@ bin\th04\op.exe: bin\th04\op.obj th04\op_02.c $** | -bin\th05\main.exe: bin\th05\main.obj th05\main_01.c +bin\th05\main.exe: bin\th05\main.obj th05\main_01.cpp $(CC) $(CFLAGS) -ml -3 -DGAME=5 -nbin\th05\ -eMAIN.EXE @&&| $** | diff --git a/th04/shared.h b/th04/shared.h deleted file mode 100644 index 08ddebef..00000000 --- a/th04/shared.h +++ /dev/null @@ -1,14 +0,0 @@ -/* ReC98 - * ----- - * Types shared between TH04 and TH05 - */ - -/// Score -/// ----- -extern unsigned long score_delta; - -void pascal near score_update_and_render(void); - -// Adds the entire score delta at once to the current score. -void pascal score_delta_commit(void); -/// ----- diff --git a/th04/shared.hpp b/th04/shared.hpp new file mode 100644 index 00000000..2794f58e --- /dev/null +++ b/th04/shared.hpp @@ -0,0 +1,53 @@ +/* ReC98 + * ----- + * Types shared between TH04 and TH05 + */ + +/// Math +/// ---- +class Subpixel { +private: + int v; + +public: + Subpixel() {} + Subpixel(float screen_v) { *this = screen_v; } + + Subpixel& operator =(float screen_v) { + v = static_cast(screen_v * 16.0f); + return *this; + } +}; + +struct SPPoint { + Subpixel x, y; + + void set(float screen_x, float screen_y) { + x = screen_x; + y = screen_y; + } +}; + +typedef struct { + SPPoint cur; + SPPoint prev; + SPPoint velocity; + + void init(float screen_x, float screen_y) { + cur.x = screen_x; + prev.x = screen_x; + cur.y = screen_y; + prev.y = screen_y; + } +} motion_t; +/// ---- + +/// Score +/// ----- +extern unsigned long score_delta; + +void pascal near score_update_and_render(void); + +// Adds the entire score delta at once to the current score. +void pascal score_delta_commit(void); +/// ----- diff --git a/th05/main_01.c b/th05/main_01.cpp similarity index 84% rename from th05/main_01.c rename to th05/main_01.cpp index 93d5b48b..eed86542 100644 --- a/th05/main_01.c +++ b/th05/main_01.cpp @@ -3,7 +3,8 @@ * Code segment #1 of TH05's MAIN.EXE */ -#include "th05/th05.h" +extern "C" { +#include "th05/th05.hpp" // Adds the entire score delta at once to the current score. void pascal score_delta_commit(void) @@ -12,3 +13,5 @@ void pascal score_delta_commit(void) score_update_and_render(); } } + +} diff --git a/th05/th05.h b/th05/th05.hpp similarity index 59% rename from th05/th05.h rename to th05/th05.hpp index 960fbd61..ff8c1cbc 100644 --- a/th05/th05.h +++ b/th05/th05.hpp @@ -4,4 +4,5 @@ */ #include "ReC98.h" -#include "th04/shared.h" +#include "th04/shared.hpp" +/// ------