Fix ground render color when inside building without windows (basement or eris power...
authorAndreas Eversberg <jolly@eversberg.eu>
Wed, 9 May 2018 13:16:32 +0000 (15:16 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Wed, 9 May 2018 13:16:32 +0000 (15:16 +0200)
In this case we need to render ground as split screen, just like when walking above planet.
But this time the ceiling and floor shares the same color index and not sky and ground.
(A raster split is used to display different colors.)

src/mercenary/mercenary2.c
src/mercenary/mercenary3.c

index 14a9070..c93a3ec 100644 (file)
@@ -44,14 +44,15 @@ const struct cpu_stop mercenary_stop_at[] = {
        { 0x54c2e,      STOP_AT_WAIT_INPUT },                   /* after pressing 'HELP' key while showing menu line on benson */
        { 0x55446,      STOP_AT_WAIT_INPUT },                   /* after pressing 'RETURN' while game waits for other key to resume */
        { 0x51620,      STOP_AT_WAIT_VBL },                     /* after dying, waiting for VBL to fade out palette */
-       { 0x596BC,      STOP_AT_CLEAR_SCREEN1 },                /* clear the screen (here we know the color 8, this is wy we cannot do it earlier) */
-       { 0x596F4,      STOP_AT_CLEAR_SCREEN1 },
-       { 0x59720,      STOP_AT_CLEAR_SCREEN1 },
-       { 0x598A8,      STOP_AT_CLEAR_SCREEN1 },
+       { 0x596BC,      STOP_AT_CLEAR_SCREEN1 },                /* clear the screen inside building, no windows (here we know the color 8, this is wy we cannot do it earlier) */
+       { 0x596F4,      STOP_AT_CLEAR_SCREEN1 },                /* walking above ground */
+       { 0x59720,      STOP_AT_CLEAR_SCREEN1 },                /* unknown */
+       { 0x598A8,      STOP_AT_CLEAR_SCREEN1 },                /* space craft on ground */
        { 0x598E6,      STOP_AT_CLEAR_SCREEN2 },                /* special case where we use color index 15 when we are flying (no raster split for ground color) */
        { 0x59982,      STOP_AT_CLEAR_SCREEN3 },                /* special case where we are in universe and do not have any ground */
        { 0x55F2E,      STOP_AT_DRAW_GROUND },                  /* the ground is rendered. the color index is captured at CLEAR_SCREEN */
-       { 0x59710,      STOP_AT_DRAW_GROUND },                  /* at this point there is ground rendered, because game uses raster split for ground color, but we do render opengl */
+       { 0x596CE,      STOP_AT_DRAW_GROUND },                  /* at this point there is ground (inside building) rendered, because game uses raster split for ground color, but we do render opengl */
+       { 0x59710,      STOP_AT_DRAW_GROUND },                  /* at this point there is ground (outside) rendered, because game uses raster split for ground color, but we do render opengl */
        { 0x531EA,      STOP_AT_INFO_OBJECT_MOVING },           /* get ID and position of next object */
        /* note: there a no fix objects in this game (no taxi/bus/intercity) */
        { 0x534EA,      STOP_AT_TAG_IS_OBJECT_1 },              /* indicates that the next tag is an object */
index 3fdde39..d2ee14f 100644 (file)
@@ -50,14 +50,15 @@ const struct cpu_stop mercenary_stop_at[] = {
        { 0x55d94,      STOP_AT_WAIT_INPUT },                   /* after pressing 'HELP' key while showing menu line on benson */
        { 0x563a6,      STOP_AT_WAIT_INPUT },                   /* after pressing 'RETURN' while game waits for other key to resume */
        { 0x52946,      STOP_AT_WAIT_VBL },                     /* after dying, waiting for VBL to fade out palette */
-       { 0x5A456,      STOP_AT_CLEAR_SCREEN1 },                /* clear the screen (here we know the color 8, this is wy we cannot do it earlier) */
-       { 0x5A48E,      STOP_AT_CLEAR_SCREEN1 },
-       { 0x5A4BA,      STOP_AT_CLEAR_SCREEN1 },
-       { 0x5A672,      STOP_AT_CLEAR_SCREEN1 },
+       { 0x5A456,      STOP_AT_CLEAR_SCREEN1 },                /* clear the screen inside building, no windows (here we know the color 8, this is wy we cannot do it earlier) */
+       { 0x5A48E,      STOP_AT_CLEAR_SCREEN1 },                /* walking above ground */
+       { 0x5A4BA,      STOP_AT_CLEAR_SCREEN1 },                /* unknown */
+       { 0x5A672,      STOP_AT_CLEAR_SCREEN1 },                /* space craft on ground */
        { 0x5A6B0,      STOP_AT_CLEAR_SCREEN2 },                /* special case where we use color index 15 when we are flying (no raster split for ground color) */
        { 0x5A770,      STOP_AT_CLEAR_SCREEN3 },                /* special case where we are in universe and do not have any ground */
        { 0x56E00,      STOP_AT_DRAW_GROUND },                  /* the ground is rendered. the color index is captured at CLEAR_SCREEN */
-       { 0x5A4AA,      STOP_AT_DRAW_GROUND },                  /* at this point there is ground rendered, because game uses raster split for ground color, but we do render opengl */
+       { 0x5A468,      STOP_AT_DRAW_GROUND },                  /* at this point there is ground (inside building) rendered, because game uses raster split for ground color, but we do render opengl */
+       { 0x5A4AA,      STOP_AT_DRAW_GROUND },                  /* at this point there is ground (outside) rendered, because game uses raster split for ground color, but we do render opengl */
        { 0x53FE2,      STOP_AT_INFO_OBJECT_MOVING },           /* get ID and position of next object */
        { 0x53E42,      STOP_AT_INFO_OBJECT_FIX },              /* next object is FIX (taxi/bus/intercity) */
        { 0x53E8E,      STOP_AT_INFO_OBJECT_FIX },