diff --git a/assets.h b/assets.h index 0870721..431ed2d 100644 --- a/assets.h +++ b/assets.h @@ -51,11 +51,11 @@ static const char *LCR_internalDataFile = "Mtestmap;" "52123 1 :*H1k0" - ":=s0s0 :fd190" // big concrete + ":=s0s0 :fd19" // big concrete - ":+w0o0" - ":+v0n0" - ":!x0n0" + ":+w0o" + ":+v0n" + ":!x0n" ":^s1A0 :fk110" // ramps before wall ":=s0B0 :fd910" // concrete wall @@ -84,10 +84,10 @@ static const char *LCR_internalDataFile = ":~t1t2 :~u1t2 :~t1u2" // bumps ":^t0r0 :fq110 " // ramps - ":}n0l0J :|n1l0J :|n3l0J- :]n4l0J- :=o0l0 :f1510" // loop - ":]n0m0J :|n1m0J :|n3m0J- :]n4m0J- :=o0m0 :f1510" // loop - ":}l0k0L :|l1k0L :|l3k0L- :]l4k0L- :=k0k0 :f1510" - ":]l0j0L :|l1j0L :|l3j0L- :]l4j0L- :=k0j0 :f1510" + ":}n0lJ :|n1lJ :|n3lJ- :]n4lJ- :=o0l :f151" // loop + ":]n0mJ :|n1mJ :|n3mJ- :]n4mJ- :=o0m :f151" // loop + ":}l0kL :|l1kL :|l3kL- :]l4kL- :=k0k :f151" + ":]l0jL :|l1jL :|l3jL- :]l4jL- :=k0j :f151" ":-k5k0 :f5120" " map end " diff --git a/game.h b/game.h index 07d671a..b45620d 100644 --- a/game.h +++ b/game.h @@ -824,6 +824,8 @@ void LCR_gameInit(int argc, const char **argv) break; } } + + LCR_gameLoadMainMenuItems(); if (quickLoad == 1) { @@ -838,10 +840,7 @@ void LCR_gameInit(int argc, const char **argv) LCR_game.menu.selectedTab = quickLoad; } else - { - LCR_gameLoadMainMenuItems(); LCR_gameSetState(LCR_GAME_STATE_MENU); - } } /** diff --git a/map.h b/map.h index ea2f21b..3125b50 100644 --- a/map.h +++ b/map.h @@ -30,7 +30,7 @@ - X, Y and Z are block coordinates, each one a single character. The following are characters signifying numbers 0 to 63: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$@ - - M is block material ('0' to '3'). + - M is optional block material ('0' to '3', 0 is default). - T is an optinal transform string (for more detail see the binary format) consisting from 0 to 3 characters, which may be: - '|': flip horizontally @@ -107,12 +107,12 @@ #define LCR_BLOCK_CORNER_CONVEX 'n' ///< curved corner (convex) #define LCR_BLOCK_CORNER_CONCAVE 'l' ///< curved corner (concave) -#define LCR_BLOCK_FULL_ACCEL '>' -#define LCR_BLOCK_BOTTOM_ACCEL 'z' -#define LCR_BLOCK_RAMP_ACCEL 'y' +#define LCR_BLOCK_FULL_ACCEL '>' ///< full block with accelerator +#define LCR_BLOCK_BOTTOM_ACCEL 'z' ///< bottom half block with accelerator +#define LCR_BLOCK_RAMP_ACCEL 'y' ///< ramp block with accelerator -#define LCR_BLOCK_FULL_FAN 'o' -#define LCR_BLOCK_RAMP_FAN 'V' +#define LCR_BLOCK_FULL_FAN 'o' ///< full block with fan +#define LCR_BLOCK_RAMP_FAN 'V' ///< ramp block with fan #define LCR_BLOCK_CHECKPOINT_0 '+' ///< checkpoint, not taken #define LCR_BLOCK_CHECKPOINT_1 '\t' ///< checkpoint, taken @@ -120,13 +120,13 @@ #define LCR_BLOCK_FINISH '!' ///< finish // special blocks: -#define LCR_BLOCK_NONE 'x' ///< no block, e.g to make holes +#define LCR_BLOCK_NONE 'x' ///< no block (to make holes etc.) #define LCR_BLOCK_CUBOID_FILL 'f' /**< makes a cuboid from the - previously specified block, the - size is given by block coords */ + previously specified block, the + size is given by block coords */ #define LCR_BLOCK_CUBOID_HOLLOW 'h' /**< same as cuboid special block, - but makes a hollow one */ + but makes a hollow one */ #define LCR_BLOCK_START '*' ///< specifies start block position /* @@ -450,18 +450,14 @@ uint8_t LCR_mapLoadFromStr(char (*getNextCharFunc)(void), const char *name) c = getNextCharFunc(); - if (c < '0' || c > '3') + if (c > '0' && c <= '3') { - LCR_LOG0("bad material"); - return 0; + mat = c - '0'; + c = getNextCharFunc(); } - mat = c - '0'; - while (1) { - c = getNextCharFunc(); - if (c == '|') trans |= LCR_BLOCK_TRANSFORM_FLIP_H; else if (c == '-') @@ -474,8 +470,10 @@ uint8_t LCR_mapLoadFromStr(char (*getNextCharFunc)(void), const char *name) trans |= LCR_BLOCK_TRANSFORM_ROT_270; else break; + + c = getNextCharFunc(); } - + while (c && c != LCR_BLOCK_START_CHAR) c = getNextCharFunc(); diff --git a/racing.h b/racing.h index 85cb0bd..eaee34f 100644 --- a/racing.h +++ b/racing.h @@ -1470,7 +1470,7 @@ uint32_t LCR_racingStep(unsigned int input) if (LCR_racing.carNotOKCount > 10) // TODO: constant { - LCR_LOG1("car not OK (short), fixing"); + LCR_LOG2("car not OK (short), fixing"); for (int i = 0; i < LCR_CAR_JOINTS; ++i) { diff --git a/renderer.h b/renderer.h index fb88c41..5af6304 100644 --- a/renderer.h +++ b/renderer.h @@ -252,6 +252,9 @@ void LCR_rendererDrawText(const char *text, int x, int y, uint16_t color, } } +uint16_t _LCR_pixelColor = 0; /**< Holds pixel color for _LCR_pixelFunc3D. This + is needed is texture subsampling is on. */ + /** Used as a fragment shader by small3dlib. This function will be called for every rasterized 3D pixel, we use it write actual pixels to the screen with @@ -436,8 +439,6 @@ void _LCR_pixelFunc3D(S3L_PixelInfo *pixel) return; } - uint16_t color; - #if LCR_SETTING_TEXTURE_SUBSAMPLE != 0 if (LCR_renderer.texSubsampleCount == 0) { @@ -448,7 +449,7 @@ void _LCR_pixelFunc3D(S3L_PixelInfo *pixel) barycentric[1] = pixel->barycentric[1] / 8; barycentric[2] = pixel->barycentric[2] / 8; - color = LCR_sampleImage( + _LCR_pixelColor = LCR_sampleImage( (barycentric[0] * LCR_renderer.triUVs[0] + barycentric[1] * LCR_renderer.triUVs[2] + barycentric[2] * LCR_renderer.triUVs[4]) @@ -465,7 +466,7 @@ void _LCR_pixelFunc3D(S3L_PixelInfo *pixel) LCR_renderer.texSubsampleCount--; #endif - LCR_drawPixelXYUnsafe(pixel->x,pixel->y,color); + LCR_drawPixelXYUnsafe(pixel->x,pixel->y,_LCR_pixelColor); #endif // LCR_SETTING_POTATO_GRAPHICS } @@ -1803,9 +1804,10 @@ void LCR_rendererDrawMenu(const char *tabName,const char **items, #if LCR_SETTING_POTATO_GRAPHICS ); #else - ^ (effect & 0x1827)); + ^ (effect & + 0x20c3)); - effect += 3; + effect += 5 + i % 4; #endif ++i; @@ -1884,7 +1886,8 @@ void LCR_rendererDrawMenu(const char *tabName,const char **items, stripHeight / LCR_IMAGE_SIZE,0xffff); #endif - LCR_rendererDrawText(LCR_texts[LCR_TEXTS_VERSION],5,5,0xe71c,2); + LCR_rendererDrawText(LCR_texts[LCR_TEXTS_VERSION], + LCR_EFFECTIVE_RESOLUTION_X / 64,LCR_EFFECTIVE_RESOLUTION_Y / 64,0xe71c,2); LCR_renderer.frame++; }