this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

WIP WIP WIP

alice a57fdae5 0dd96886

+115 -14
+2 -2
CMakeLists.txt
··· 107 107 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11") 108 108 endif() 109 109 110 - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fsanitize=address -fno-omit-frame-pointer") 111 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fsanitize=address -fno-omit-frame-pointer") 110 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fsanitize=address -fsanitize=undefined -fsanitize=leak -fsanitize-recover=undefined -fno-omit-frame-pointer") 111 + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fsanitize=address -fsanitize=undefined -fsanitize=leak -fsanitize-recover=undefined -fno-omit-frame-pointer") 112 112 113 113 set(THIRDPARTY_DIR ${CMAKE_SOURCE_DIR}/vendor) 114 114 set(DEMO_CARTS_IN ${CMAKE_SOURCE_DIR}/demos)
+2
include/tic80_types.h
··· 25 25 #include <stdint.h> 26 26 #include <stdbool.h> 27 27 #include <string.h> 28 + #include <inttypes.h> 29 + #include <stdint.h> 28 30 29 31 #ifdef memcpy 30 32 #undef memcpy
+12 -5
src/cart.c
··· 95 95 // iterate on chunks until we find a cartridge 96 96 while (ptr < end) 97 97 { 98 - siz = ((ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3]); 98 + // alice was here 99 + // siz = ((ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3]); 100 + uint32_t size; 101 + memcpy(&size, ptr, sizeof(uint32_t)); 102 + siz = ntohl(size); // Ensure correct endianness 99 103 if (!memcmp(ptr + 4, "caRt", 4) && siz > 0) 100 104 { 101 105 chunk_cart = malloc(sizeof(tic_cartridge)); ··· 121 125 const u8* ptr = buffer; 122 126 while (ptr < end) 123 127 { 124 - const Chunk* chunk = (Chunk*)ptr; 125 - ptr += sizeof(Chunk); 128 + // const Chunk* chunk = (Chunk*)ptr; 129 + // ptr += sizeof(Chunk); 130 + 131 + const Chunk* chunk = (Chunk*)(ptr + (sizeof(Chunk) - ((uintptr_t)ptr % sizeof(Chunk))) % sizeof(Chunk)); 132 + ptr = (const u8*)chunk + sizeof(Chunk); 126 133 127 134 switch (chunk->type) 128 135 { ··· 157 164 const u8* ptr = buffer; 158 165 while(ptr < end) 159 166 { 160 - const Chunk* chunk = (Chunk*)ptr; 161 - ptr += sizeof(Chunk); 167 + const Chunk* chunk = (Chunk*)(ptr + (sizeof(Chunk) - ((uintptr_t)ptr % sizeof(Chunk))) % sizeof(Chunk)); 168 + ptr = (const u8*)chunk + sizeof(Chunk); 162 169 163 170 switch(chunk->type) 164 171 {
+36 -1
src/core/io.c
··· 143 143 tic->ram->input.gamepads.data |= 1 << i; 144 144 145 145 // process gamepad 146 - for (s32 i = 0; i < COUNT_OF(core->state.gamepads.holds); i++) 146 + for (s32 i = 0; i < COUNT_OF(core->state.gamepads.holds) && i < 32; i++) 147 147 { 148 148 u32 mask = 1 << i; 149 149 u32 prevDown = core->state.gamepads.previous.data & mask; ··· 166 166 else *hold = 0; 167 167 } 168 168 } 169 + 170 + // void tic_core_tick_io(tic_mem* tic) 171 + // { 172 + // tic_core* core = (tic_core*)tic; 173 + 174 + // // process gamepads mapping 175 + // u8* keycodes = tic->ram->mapping.data; 176 + // for(s32 i = 0; i < sizeof(tic_mapping); ++i) 177 + // if(keycodes[i] && tic_api_key(tic, keycodes[i])) 178 + // tic->ram->input.gamepads.data |= 1 << i; 179 + 180 + // // process gamepad 181 + // for (s32 i = 0; i < COUNT_OF(core->state.gamepads.holds); i++) 182 + // { 183 + // u32 mask = 1 << i; 184 + // u32 prevDown = core->state.gamepads.previous.data & mask; 185 + // u32 down = tic->ram->input.gamepads.data & mask; 186 + 187 + // u32* hold = &core->state.gamepads.holds[i]; 188 + // if (prevDown && prevDown == down) (*hold)++; 189 + // else *hold = 0; 190 + // } 191 + 192 + // // process keyboard 193 + // for (s32 i = 0; i < tic_keys_count; i++) 194 + // { 195 + // bool prevDown = isKeyPressed(&core->state.keyboard.previous, i); 196 + // bool down = isKeyPressed(&tic->ram->input.keyboard, i); 197 + 198 + // u32* hold = &core->state.keyboard.holds[i]; 199 + 200 + // if (prevDown && down) (*hold)++; 201 + // else *hold = 0; 202 + // } 203 + // }
+5 -2
src/studio/screens/console.c
··· 1335 1335 1336 1336 // Calculate remaining buffer space 1337 1337 size_t currentLength = strlen(data->options); 1338 - size_t availableSpace = CONSOLE_BUFFER_SCREEN - currentLength - 1; // -1 for null terminator 1338 + // ASAN GIVE IT TWICE THE CONSOLE_BUFFER_SCREEN FOR FUNSIES 1339 + size_t availableSpace = (CONSOLE_BUFFER_SCREEN * 2) - currentLength - 1; // -1 for null terminator 1339 1340 1340 1341 if (strlen(option) + 1 > availableSpace) { // +1 for the space character 1341 1342 printf("ASAN Error: Not enough buffer space to add option: %s\n", option); ··· 3579 3580 TabCompleteData newTabCompleteData(Console* console, char* incompleteWord) { 3580 3581 TabCompleteData data = { console, .incompleteWord = incompleteWord }; 3581 3582 printf("BEFORE MALLOC1 IN newTabCompleteData\n"); 3582 - data.options = malloc(CONSOLE_BUFFER_SCREEN); 3583 + // data.options = malloc(CONSOLE_BUFFER_SCREEN); 3584 + printf("ASAN FUCK IT WE MALLOC TWICE AS MUCH\n"); 3585 + data.options = malloc(CONSOLE_BUFFER_SCREEN * 2); 3583 3586 printf("BEFORE MALLOC2 IN newTabCompleteData\n"); 3584 3587 data.commonPrefix = malloc(CONSOLE_BUFFER_SCREEN); 3585 3588
+58 -4
src/studio/studio.c
··· 951 951 return x; 952 952 } 953 953 954 + // static void animTick(Movie* movie) 955 + // { 956 + // for(Anim* it = movie->items, *end = it + movie->count; it != end; ++it) 957 + // { 958 + // float tick = (float)(movie->tick < it->time ? movie->tick : it->time); 959 + // *it->value = lerp(it->start, it->end, animEffect(it->effect, tick / it->time)); 960 + // } 961 + // } 962 + 963 + // static void animTick(Movie* movie) 964 + // { 965 + // printf("Starting animTick, movie: %p\n", (void*)movie); 966 + // if (!movie) { 967 + // printf("Error: movie is NULL\n"); 968 + // return; 969 + // } 970 + 971 + // printf("Movie count: %d\n", movie->count); 972 + // for(Anim* it = movie->items, *end = it + movie->count; it != end; ++it) 973 + // { 974 + // printf("Processing animation item, it: %p\n", (void*)it); 975 + // if(it->value && it->start && it->end && it->effect) { 976 + // float tick = (float)(movie->tick < it->time ? movie->tick : it->time); 977 + // printf("tick: %f, it->time: %" PRId32 "\n", tick, it->time); 978 + // printf("it->start: %" PRId32 ", it->end: %" PRId32 ", it->effect: %p\n", it->start, it->end, (void*)it->effect); 979 + // *it->value = lerp(it->start, it->end, animEffect(it->effect, tick / it->time)); 980 + // printf("Updated it->value: %d\n", *it->value); 981 + // } else { 982 + // printf("Null pointer detected (it->value: %p, it->start: %" PRId32 ", it->end: %" PRId32 ", it->effect: %p)\n", (void*)it->value, it->start, it->end, (void*)it->effect); 983 + // } 984 + // } 985 + // printf("Finished animTick\n"); 986 + // } 987 + 954 988 static void animTick(Movie* movie) 955 989 { 956 - for(Anim* it = movie->items, *end = it + movie->count; it != end; ++it) 957 - { 958 - float tick = (float)(movie->tick < it->time ? movie->tick : it->time); 959 - *it->value = lerp(it->start, it->end, animEffect(it->effect, tick / it->time)); 990 + printf("Starting animTick, movie: %p\n", (void*)movie); 991 + if (!movie) { 992 + printf("Error: movie is NULL\n"); 993 + return; 994 + } 995 + 996 + printf("Movie count: %d\n", movie->count); 997 + if (movie->items) { 998 + for(Anim* it = movie->items, *end = movie->items + movie->count; it != end; ++it) 999 + { 1000 + printf("Processing animation item, it: %p\n", (void*)it); 1001 + if(it->value && it->start && it->end && it->effect) { 1002 + float tick = (float)(movie->tick < it->time ? movie->tick : it->time); 1003 + printf("tick: %f, it->time: %" PRId32 "\n", tick, it->time); 1004 + printf("it->start: %" PRId32 ", it->end: %" PRId32 ", it->effect: %p\n", it->start, it->end, (void*)it->effect); 1005 + *it->value = lerp(it->start, it->end, animEffect(it->effect, tick / it->time)); 1006 + printf("Updated it->value: %d\n", *it->value); 1007 + } else { 1008 + printf("Null pointer detected (it->value: %p, it->start: %" PRId32 ", it->end: %" PRId32 ", it->effect: %p)\n", (void*)it->value, it->start, it->end, (void*)it->effect); 1009 + } 1010 + } 1011 + } else { 1012 + printf("movie->items is NULL\n"); 960 1013 } 1014 + printf("Finished animTick\n"); 961 1015 } 962 1016 963 1017 void processAnim(Movie* movie, void* data)