From adccfcceb374fd015589a7f85563d355b56220de Mon Sep 17 00:00:00 2001 From: Milang Date: Wed, 29 Jan 2020 14:34:47 +0100 Subject: [PATCH] cleaned some parts of the code --- SuperCbr.g1a | Bin 85436 -> 84956 bytes build-fx/SuperCbr.bin | Bin 84924 -> 84444 bytes build-fx/SuperCbr.elf | Bin 103684 -> 103496 bytes build-fx/map | 1058 +++++++++++++++++---------------- build-fx/src/bonus.c.d | 4 +- build-fx/src/bonus.c.o | Bin 3256 -> 2052 bytes build-fx/src/box.c.d | 5 +- build-fx/src/box.c.o | Bin 2084 -> 2068 bytes build-fx/src/config.c.d | 4 +- build-fx/src/config.c.o | Bin 1408 -> 1400 bytes build-fx/src/ennemi.c.d | 4 +- build-fx/src/ennemi.c.o | Bin 4480 -> 4444 bytes build-fx/src/keyboard.c.o | Bin 2084 -> 2008 bytes build-fx/src/level.c.o | Bin 35948 -> 35536 bytes build-fx/src/levelchanger.c.o | Bin 4604 -> 4652 bytes build-fx/src/mario.c.d | 6 +- build-fx/src/mario.c.o | Bin 4092 -> 4048 bytes build-fx/src/plateforme.c.d | 4 +- build-fx/src/plateforme.c.o | Bin 1972 -> 1956 bytes build-fx/src/score.c.o | Bin 2484 -> 2644 bytes build-fx/src/tuyau.c.d | 5 +- build-fx/src/tuyau.c.o | Bin 1456 -> 1456 bytes build-fx/src/world.c.d | 13 +- build-fx/src/world.c.o | Bin 4360 -> 4016 bytes include/bonus.h | 28 +- include/box.h | 11 +- include/ennemi.h | 2 + include/keyboard.h | 41 +- include/score.h | 11 +- include/world.h | 2 +- src/bonus.c | 115 +--- src/box.c | 106 ++-- src/config.c | 9 +- src/ennemi.c | 17 +- src/keyboard.c | 79 +-- src/level.c | 14 +- src/levelchanger.c | 27 +- src/mario.c | 40 +- src/plateforme.c | 3 +- src/score.c | 19 +- src/tuyau.c | 8 +- src/world.c | 57 +- 42 files changed, 828 insertions(+), 864 deletions(-) diff --git a/SuperCbr.g1a b/SuperCbr.g1a index fac659e827295c553eed9dc5c5bab3672254dc87..5414bfc142fd052f8afc04eae14acb08fd263d32 100644 GIT binary patch delta 15385 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 delta 15729 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 Me|UB#eq;6j0501@8UO$Q diff --git a/build-fx/SuperCbr.bin b/build-fx/SuperCbr.bin index 800a2543ce95b90cba3a786ca3c57c78e212ed9c..4bf57f485c369f6ff4ed518abea7a58a5abd1e80 100755 GIT binary patch delta 15346 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 ZMV+%gSG%t?m6qWsQDhevKYJ#HT13@ko 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� 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 V)fm(u#E1S1*&FeAKIl`7{U1-)%jN(8 diff --git a/build-fx/map b/build-fx/map index 69ca73d..46ac1dc 100644 --- a/build-fx/map +++ b/build-fx/map @@ -70,12 +70,12 @@ Archive member included to satisfy reference by file (symbol) build-fx/src/world.c.o (_ll_sendp) /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_movmem.o) build-fx/src/level.c.o (___movmemSI60) +/home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivsi3.o) + build-fx/src/camera.c.o (___udivsi3) /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivdi3.o) /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) (___udivdi3) /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_umoddi3.o) /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) (___umoddi3) -/home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivsi3.o) - /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivdi3.o) (___udivsi3) /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udiv_qrnnd_16.o) /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivdi3.o) (___udiv_qrnnd_16) /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_clz.o) @@ -88,11 +88,13 @@ frame_id 0x4 build-fx/src/levelchanger.c.o Discarded input sections + .comment 0x0000000000000000 0x12 build-fx/src/base.c.o .comment 0x0000000000000000 0x12 build-fx/src/levelchanger.c.o .comment 0x0000000000000000 0x12 build-fx/src/level.c.o .comment 0x0000000000000000 0x12 build-fx/src/config.c.o .comment 0x0000000000000000 0x12 build-fx/src/score.c.o .comment 0x0000000000000000 0x12 build-fx/src/tuyau.c.o + .comment 0x0000000000000000 0x12 build-fx/src/bullet.c.o .comment 0x0000000000000000 0x12 build-fx/src/tile.c.o .comment 0x0000000000000000 0x12 build-fx/src/plateforme.c.o .comment 0x0000000000000000 0x12 build-fx/src/box.c.o @@ -100,10 +102,11 @@ Discarded input sections .comment 0x0000000000000000 0x12 build-fx/src/framerate.c.o .comment 0x0000000000000000 0x12 build-fx/src/bonus.c.o .comment 0x0000000000000000 0x12 build-fx/src/save.c.o - .comment 0x0000000000000000 0x12 build-fx/src/mario.c.o + .comment 0x0000000000000000 0x12 build-fx/src/camera.c.o .comment 0x0000000000000000 0x12 build-fx/src/main.c.o .comment 0x0000000000000000 0x12 build-fx/src/keyboard.c.o .comment 0x0000000000000000 0x12 build-fx/src/ennemi.c.o + .comment 0x0000000000000000 0x12 build-fx/src/mario.c.o .comment 0x0000000000000000 0x12 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) .comment 0x0000000000000000 0x12 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(memory.c.o) .comment 0x0000000000000000 0x12 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dtext.c.o) @@ -172,11 +175,13 @@ yram 0x00000000e5017000 0x0000000000002000 xrw Linker script and memory map +LOAD build-fx/src/base.c.o LOAD build-fx/src/levelchanger.c.o LOAD build-fx/src/level.c.o LOAD build-fx/src/config.c.o LOAD build-fx/src/score.c.o LOAD build-fx/src/tuyau.c.o +LOAD build-fx/src/bullet.c.o LOAD build-fx/src/tile.c.o LOAD build-fx/src/plateforme.c.o LOAD build-fx/src/box.c.o @@ -184,10 +189,11 @@ LOAD build-fx/src/world.c.o LOAD build-fx/src/framerate.c.o LOAD build-fx/src/bonus.c.o LOAD build-fx/src/save.c.o -LOAD build-fx/src/mario.c.o +LOAD build-fx/src/camera.c.o LOAD build-fx/src/main.c.o LOAD build-fx/src/keyboard.c.o LOAD build-fx/src/ennemi.c.o +LOAD build-fx/src/mario.c.o LOAD build-fx/assets/fonts/mario.png.o LOAD build-fx/assets/img/bonus.png.o LOAD build-fx/assets/img/bloc.png.o @@ -240,7 +246,7 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/liblog-fx.a LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a 0x0000000000300000 _brom = 0x300000 - 0x000000000001424c _srom = ((((0x200 + SIZEOF (.text)) + SIZEOF (.rodata)) + SIZEOF (.gint.drivers)) + SIZEOF (.gint.blocks)) + 0x000000000001406c _srom = ((((0x200 + SIZEOF (.text)) + SIZEOF (.rodata)) + SIZEOF (.gint.drivers)) + SIZEOF (.gint.blocks)) .pretext 0x0000000000300200 0x8d0 *(.pretext.entry) @@ -280,7 +286,7 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a *(.dtors .dtors.*) 0x0000000000300ad0 _etors = . -.text 0x0000000000300ad0 0x8f80 +.text 0x0000000000300ad0 0x8da0 0x0000000000300ad0 _gint_exch_tlbh_start = . *(.gint.exch_tlbh) .gint.exch_tlbh @@ -288,513 +294,522 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a 0x0000000000300ad0 _gint_exch_tlbh 0x000000000000004c _gint_exch_tlbh_size = ABSOLUTE ((. - _gint_exch_tlbh_start)) *(.text .text.*) - .text 0x0000000000300b1c 0x654 build-fx/src/levelchanger.c.o - 0x0000000000300b1c _play_level - 0x0000000000300c88 _launch_ui - .text 0x0000000000301170 0x251c build-fx/src/level.c.o - 0x0000000000301170 _malloc_error - 0x00000000003011a8 _init_level - 0x000000000030122c _init_ennemies - 0x000000000030129c _set_level - 0x000000000030366c _get_lvl_id - .text 0x000000000030368c 0xd8 build-fx/src/config.c.o - 0x000000000030368c _configmenu - .text 0x0000000000303764 0x25c build-fx/src/score.c.o - 0x0000000000303764 _new_level - 0x0000000000303784 _new_game - 0x00000000003037d8 _get_score - 0x00000000003037e4 _get_coins - 0x00000000003037f0 _score_reset - 0x0000000000303810 _score_add_coin - 0x0000000000303820 _score_add - 0x0000000000303870 _score_display - 0x00000000003039b4 _get_time_spent - .text 0x00000000003039c0 0x180 build-fx/src/tuyau.c.o - 0x00000000003039c0 _set_teleporteurs - 0x00000000003039f8 _teleport_active - .text 0x0000000000303b40 0x40 build-fx/src/tile.c.o - 0x0000000000303b40 _draw_tile - .text 0x0000000000303b80 0x324 build-fx/src/plateforme.c.o - 0x0000000000303b80 _reset_plateforme - 0x0000000000303b8e _move_plateforme - 0x0000000000303d58 _display_plateformes - 0x0000000000303df8 _move_plateformes - 0x0000000000303e50 _plateforme_check_collide - .text 0x0000000000303ea4 0x470 build-fx/src/box.c.o - 0x0000000000303ea4 _sgn - 0x0000000000303eb6 _check_collision - 0x0000000000303f48 _box_move - 0x0000000000304290 _box_jump - .text 0x0000000000304314 0x620 build-fx/src/world.c.o - 0x0000000000304314 _world_get_width - 0x0000000000304324 _world_get - 0x0000000000304388 _display_cell - 0x0000000000304694 _world_get_ctg - 0x00000000003046e8 _reset_camera - 0x0000000000304704 _world_get_real_x0 - 0x000000000030472c _reload_camera - 0x0000000000304754 _world_get_real_y0 - 0x0000000000304768 _world_draw - 0x0000000000304884 _world_move - .text 0x0000000000304934 0x70 build-fx/src/framerate.c.o - 0x0000000000304934 _callback - 0x000000000030493c _init_refresh - 0x000000000030497c _quit_refresh - 0x0000000000304988 _wait_next_frame - .text 0x00000000003049a4 0x56c build-fx/src/bonus.c.o - 0x00000000003049a4 _bonus_set - 0x00000000003049d4 _bonus_move - 0x0000000000304b88 _bonus_draw - 0x0000000000304c9c _lance_bullet - 0x0000000000304cf8 _bullet_display - 0x0000000000304d90 _bullet_move - .text 0x0000000000304f10 0x224 build-fx/src/save.c.o - 0x0000000000304f10 _load_save - 0x0000000000304f14 _flash_save - 0x0000000000304f18 _get_highscore - 0x0000000000304f68 _set_highscore - 0x0000000000304fc4 _get_highcoins - 0x0000000000305014 _set_highcoins - 0x0000000000305070 _get_best_time - 0x00000000003050c0 _set_best_time - 0x0000000000305128 _get_progress_status - .text 0x0000000000305134 0x7b8 build-fx/src/mario.c.o - 0x0000000000305144 _mario_bigger - 0x0000000000305160 _mario_smaller - 0x000000000030518c _mario_draw - 0x0000000000305348 _test_sol_le_plus_proche - 0x00000000003053b4 _mario_move - .text 0x00000000003058ec 0x0 build-fx/src/main.c.o - .text.startup 0x00000000003058ec 0x5c build-fx/src/main.c.o - 0x00000000003058ec _main - .text 0x0000000000305948 0x2c0 build-fx/src/keyboard.c.o - 0x0000000000305948 _keyboard_clear - 0x0000000000305968 _getkey_custom - 0x00000000003059b8 _menu_pause - 0x0000000000305b10 _update_keyboard - .text 0x0000000000305c08 0x98c build-fx/src/ennemi.c.o - 0x0000000000305c08 _display_ennemi - 0x0000000000305f38 _ennemi_check_collision - 0x0000000000305f9c _hurt_mario - 0x0000000000305fd0 _move_ennemi - 0x0000000000306554 _display_ennemi_table - .text 0x0000000000306594 0xce4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) - 0x0000000000306f90 _kprint_opt - 0x00000000003070d8 _kprint - 0x00000000003071b0 _kvsprint - 0x00000000003071f8 _sprintf - 0x0000000000307220 _vsprintf - 0x0000000000307240 _snprintf - 0x0000000000307260 _vsnprintf - .text 0x0000000000307278 0xdc /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(memory.c.o) - 0x0000000000307278 _memcpy - 0x0000000000307332 __memmove - 0x0000000000307336 __memcmp - 0x000000000030733a _memset - .text 0x0000000000307354 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dtext.c.o) - .text 0x0000000000307354 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(topti.c.o) - .text 0x0000000000307354 0x11c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(drect.c.o) - 0x0000000000307354 _drect - .text 0x0000000000307470 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dupdate.c.o) - 0x0000000000307470 _dupdate - 0x0000000000307488 _dupdate_noint - .text 0x0000000000307494 0x9c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(masks.c.o) - 0x0000000000307494 _masks - .text 0x0000000000307530 0xc8 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dimage.c.o) - 0x0000000000307530 _dimage - 0x0000000000307584 _dsubimage - .text 0x00000000003075f8 0x4c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dclear.c.o) - 0x00000000003075f8 _dclear - .text 0x0000000000307644 0x3fc /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(keysc.c.o) - 0x00000000003077ec _pollevent - 0x0000000000307930 _waitevent - 0x000000000030797c _clearevents - 0x000000000030799c _keydown - 0x00000000003079c8 _keydown_all - 0x0000000000307a04 _keydown_any - .text 0x0000000000307a40 0x124 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(iokbd.c.o) - 0x0000000000307a4c _iokbd_row - 0x0000000000307b34 _iokbd_scan - .text 0x0000000000307b64 0x1f4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(getkey.c.o) - 0x0000000000307b64 _getkey_opt - 0x0000000000307d10 _getkey - 0x0000000000307d1c _getkey_repeat - .text 0x0000000000307d58 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(start.c.o) - .text 0x0000000000307d58 0x1c4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(exch.c.o) - 0x0000000000307ee8 _gint_panic - 0x0000000000307ef8 _gint_panic_set - 0x0000000000307f04 _gint_exc_catch - 0x0000000000307f10 _gint_exc_skip - .text 0x0000000000307f1c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(syscalls.S.o) - .text 0x0000000000307f1c 0x17c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(setup.c.o) - 0x0000000000307fd0 _gint_install - 0x0000000000308080 _gint_unload - .text 0x0000000000308098 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(hardware.c.o) - .text 0x0000000000308098 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(exch.s.o) - .text 0x0000000000308098 0x1f4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(mmu.c.o) - 0x0000000000308098 _tlb_addr - 0x00000000003080ac _tlb_data - 0x00000000003080c0 _tlb_mapped_memory - 0x0000000000308194 _utlb_addr - 0x00000000003081a4 _utlb_data - 0x00000000003081b4 _utlb_mapped_memory - .text 0x000000000030828c 0x9c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(topti.c.o) - 0x000000000030828c _dsize - .text 0x0000000000308328 0x58 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dprint.c.o) - 0x0000000000308328 _dprint - .text 0x0000000000308380 0x56c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(tmu.c.o) - 0x00000000003086a0 _timer_setup - 0x0000000000308730 _timer_delay - 0x0000000000308790 _timer_start - 0x00000000003087c4 _timer_reload - 0x00000000003087e4 _timer_pause - 0x0000000000308818 _timer_stop - 0x0000000000308874 _timer_timeout - 0x0000000000308880 _timer_address - 0x00000000003088bc _timer_clear - .text 0x00000000003088ec 0x58 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(sleep.c.o) - 0x00000000003088ec _sleep_us - .text 0x0000000000308944 0x1d8 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(t6k11.c.o) - 0x00000000003089dc _t6k11_display - 0x0000000000308ab0 _t6k11_contrast - 0x0000000000308adc _t6k11_backlight - .text 0x0000000000308b1c 0x150 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(cpg.c.o) - 0x0000000000308c60 _clock_freq - .text 0x0000000000308c6c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(topti-asm.s.o) - .text 0x0000000000308c6c 0x58 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(bopti-asm.s.o) - 0x0000000000308c6c _bopti_asm_mono - 0x0000000000308c92 _bopti_asm_mono_alpha - .text 0x0000000000308cc4 0x410 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(bopti.c.o) - 0x0000000000308cc4 _bopti_grid - 0x0000000000308e38 _bopti_render - 0x0000000000308f68 _bopti_render_clip - 0x000000000030907c _bopti_render_noclip - .text 0x00000000003090d4 0x2c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(vbr.s.o) - 0x00000000003090d4 _gint_setvbr - .text 0x0000000000309100 0x78 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(gint.c.o) - 0x0000000000309100 _gint_intlevel - 0x0000000000309154 _gint_inthandler - .text 0x0000000000309178 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.S.o) - .text 0x0000000000309178 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.s.o) - .text 0x0000000000309178 0x36c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/liblog-fx.a(liblog.c.o) - 0x0000000000309258 _ll_set_size - 0x000000000030926c _ll_set_state - 0x000000000030928c _ll_get_state - 0x000000000030929c _ll_clear - 0x00000000003092e8 _ll_send - 0x000000000030935c _ll_sendp - 0x00000000003093a8 _ll_display_custom - 0x0000000000309414 _ll_display - 0x0000000000309428 _ll_pause - 0x0000000000309480 _ll_panic - 0x00000000003094bc _ll_set_panic - 0x00000000003094cc _ll_set_level - 0x00000000003094d8 _ll_get_level - .text 0x00000000003094e4 0x78 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_movmem.o) - 0x00000000003094e4 ___movstr - 0x00000000003094e4 ___movmem - 0x0000000000309518 ___movmemSI64 - 0x0000000000309518 ___movstrSI64 - 0x000000000030951c ___movstrSI60 - 0x000000000030951c ___movmemSI60 - 0x0000000000309520 ___movmemSI56 - 0x0000000000309520 ___movstrSI56 - 0x0000000000309524 ___movstrSI52 - 0x0000000000309524 ___movmemSI52 - 0x0000000000309528 ___movstrSI48 - 0x0000000000309528 ___movmemSI48 - 0x000000000030952c ___movstrSI44 - 0x000000000030952c ___movmemSI44 - 0x0000000000309530 ___movstrSI40 - 0x0000000000309530 ___movmemSI40 - 0x0000000000309534 ___movstrSI36 - 0x0000000000309534 ___movmemSI36 - 0x0000000000309538 ___movmemSI32 - 0x0000000000309538 ___movstrSI32 - 0x000000000030953c ___movmemSI28 - 0x000000000030953c ___movstrSI28 - 0x0000000000309540 ___movstrSI24 - 0x0000000000309540 ___movmemSI24 - 0x0000000000309544 ___movmemSI20 - 0x0000000000309544 ___movstrSI20 - 0x0000000000309548 ___movstrSI16 - 0x0000000000309548 ___movmemSI16 - 0x000000000030954c ___movmemSI12 - 0x000000000030954c ___movstrSI12 - 0x0000000000309550 ___movmemSI8 - 0x0000000000309550 ___movstrSI8 - 0x0000000000309554 ___movmemSI4 - 0x0000000000309554 ___movstrSI4 - .text 0x000000000030955c 0x1f0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivdi3.o) - 0x000000000030955c ___udivdi3 - .text 0x000000000030974c 0x234 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_umoddi3.o) - 0x000000000030974c ___umoddi3 - .text 0x0000000000309980 0x6c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivsi3.o) - 0x00000000003099a2 ___udivsi3 - *fill* 0x00000000003099ec 0x4 - .text 0x00000000003099f0 0x60 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udiv_qrnnd_16.o) - 0x00000000003099f0 ___udiv_qrnnd_16 - .text 0x0000000000309a50 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_clz.o) + .text 0x0000000000300b1c 0x28 build-fx/src/base.c.o + 0x0000000000300b1c _max + 0x0000000000300b28 _min + 0x0000000000300b34 _sgn + .text 0x0000000000300b44 0x660 build-fx/src/levelchanger.c.o + 0x0000000000300b44 _play_level + 0x0000000000300cb0 _launch_ui + .text 0x00000000003011a4 0x2380 build-fx/src/level.c.o + 0x00000000003011a4 _malloc_error + 0x00000000003011dc _init_level + 0x0000000000301260 _init_ennemies + 0x00000000003012d0 _set_level + 0x0000000000303504 _get_lvl_id + .text 0x0000000000303524 0xd4 build-fx/src/config.c.o + 0x0000000000303524 _configmenu + .text 0x00000000003035f8 0x288 build-fx/src/score.c.o + 0x00000000003035f8 _new_level + 0x0000000000303618 _new_game + 0x000000000030366c _get_score + 0x0000000000303678 _get_coins + 0x0000000000303684 _score_reset + 0x00000000003036a4 _score_add_coin + 0x00000000003036b4 _score_add + 0x0000000000303704 _score_display + 0x0000000000303848 _get_time_spent + 0x0000000000303854 _lifes_get + 0x0000000000303860 _lifes_lose + 0x0000000000303870 _lifes_add + .text 0x0000000000303880 0x178 build-fx/src/tuyau.c.o + 0x0000000000303880 _set_teleporteurs + 0x00000000003038b8 _teleport_active + .text 0x00000000003039f8 0x278 build-fx/src/bullet.c.o + 0x00000000003039f8 _bullet_throw + 0x0000000000303a54 _bullet_display + 0x0000000000303af0 _bullet_move + .text 0x0000000000303c70 0x40 build-fx/src/tile.c.o + 0x0000000000303c70 _draw_tile + .text 0x0000000000303cb0 0x324 build-fx/src/plateforme.c.o + 0x0000000000303cb0 _reset_plateforme + 0x0000000000303cbe _move_plateforme + 0x0000000000303e88 _display_plateformes + 0x0000000000303f28 _move_plateformes + 0x0000000000303f80 _plateforme_check_collide + .text 0x0000000000303fd4 0x460 build-fx/src/box.c.o + 0x0000000000303fd4 _check_collision + 0x0000000000304068 _box_move + 0x00000000003043b0 _box_jump + .text 0x0000000000304434 0x5a4 build-fx/src/world.c.o + 0x0000000000304434 _world_get_width + 0x0000000000304444 _world_get + 0x00000000003044a8 _display_cell + 0x00000000003047b4 _world_get_ctg + 0x0000000000304808 _world_draw + 0x0000000000304914 _world_move + .text 0x00000000003049d8 0x70 build-fx/src/framerate.c.o + 0x00000000003049d8 _callback + 0x00000000003049e0 _init_refresh + 0x0000000000304a20 _quit_refresh + 0x0000000000304a2c _wait_next_frame + .text 0x0000000000304a48 0x298 build-fx/src/bonus.c.o + 0x0000000000304a48 _bonus_set + 0x0000000000304a78 _bonus_move + 0x0000000000304be8 _bonus_draw + .text 0x0000000000304ce0 0x224 build-fx/src/save.c.o + 0x0000000000304ce0 _load_save + 0x0000000000304ce4 _flash_save + 0x0000000000304ce8 _get_highscore + 0x0000000000304d38 _set_highscore + 0x0000000000304d94 _get_highcoins + 0x0000000000304de4 _set_highcoins + 0x0000000000304e40 _get_best_time + 0x0000000000304e90 _set_best_time + 0x0000000000304ef8 _get_progress_status + .text 0x0000000000304f04 0x8c build-fx/src/camera.c.o + 0x0000000000304f04 _camera_x + 0x0000000000304f34 _camera_y + 0x0000000000304f40 _camera_move + 0x0000000000304f70 _camera_adjust + 0x0000000000304f84 _camera_reset + .text 0x0000000000304f90 0x0 build-fx/src/main.c.o + .text.startup 0x0000000000304f90 0x5c build-fx/src/main.c.o + 0x0000000000304f90 _main + .text 0x0000000000304fec 0x290 build-fx/src/keyboard.c.o + 0x0000000000304fec _mkb_getstate + 0x0000000000305004 _mkb_clear + 0x0000000000305024 _mkb_getkey + 0x0000000000305060 _mkb_update + .text 0x000000000030527c 0x97c build-fx/src/ennemi.c.o + 0x000000000030527c _display_ennemi + 0x00000000003055ac _ennemi_check_collision + 0x0000000000305610 _hurt_mario + 0x0000000000305644 _move_ennemi + 0x0000000000305bb8 _display_ennemi_table + .text 0x0000000000305bf8 0x7c0 build-fx/src/mario.c.o + 0x0000000000305c08 _mario_bigger + 0x0000000000305c24 _mario_smaller + 0x0000000000305c50 _mario_draw + 0x0000000000305e0c _test_sol_le_plus_proche + 0x0000000000305e78 _mario_move + .text 0x00000000003063b8 0xce4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) + 0x0000000000306db4 _kprint_opt + 0x0000000000306efc _kprint + 0x0000000000306fd4 _kvsprint + 0x000000000030701c _sprintf + 0x0000000000307044 _vsprintf + 0x0000000000307064 _snprintf + 0x0000000000307084 _vsnprintf + .text 0x000000000030709c 0xdc /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(memory.c.o) + 0x000000000030709c _memcpy + 0x0000000000307156 __memmove + 0x000000000030715a __memcmp + 0x000000000030715e _memset + .text 0x0000000000307178 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dtext.c.o) + .text 0x0000000000307178 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(topti.c.o) + .text 0x0000000000307178 0x11c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(drect.c.o) + 0x0000000000307178 _drect + .text 0x0000000000307294 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dupdate.c.o) + 0x0000000000307294 _dupdate + 0x00000000003072ac _dupdate_noint + .text 0x00000000003072b8 0x9c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(masks.c.o) + 0x00000000003072b8 _masks + .text 0x0000000000307354 0xc8 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dimage.c.o) + 0x0000000000307354 _dimage + 0x00000000003073a8 _dsubimage + .text 0x000000000030741c 0x4c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dclear.c.o) + 0x000000000030741c _dclear + .text 0x0000000000307468 0x3fc /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(keysc.c.o) + 0x0000000000307610 _pollevent + 0x0000000000307754 _waitevent + 0x00000000003077a0 _clearevents + 0x00000000003077c0 _keydown + 0x00000000003077ec _keydown_all + 0x0000000000307828 _keydown_any + .text 0x0000000000307864 0x124 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(iokbd.c.o) + 0x0000000000307870 _iokbd_row + 0x0000000000307958 _iokbd_scan + .text 0x0000000000307988 0x1f4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(getkey.c.o) + 0x0000000000307988 _getkey_opt + 0x0000000000307b34 _getkey + 0x0000000000307b40 _getkey_repeat + .text 0x0000000000307b7c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(start.c.o) + .text 0x0000000000307b7c 0x1c4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(exch.c.o) + 0x0000000000307d0c _gint_panic + 0x0000000000307d1c _gint_panic_set + 0x0000000000307d28 _gint_exc_catch + 0x0000000000307d34 _gint_exc_skip + .text 0x0000000000307d40 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(syscalls.S.o) + .text 0x0000000000307d40 0x17c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(setup.c.o) + 0x0000000000307df4 _gint_install + 0x0000000000307ea4 _gint_unload + .text 0x0000000000307ebc 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(hardware.c.o) + .text 0x0000000000307ebc 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(exch.s.o) + .text 0x0000000000307ebc 0x1f4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(mmu.c.o) + 0x0000000000307ebc _tlb_addr + 0x0000000000307ed0 _tlb_data + 0x0000000000307ee4 _tlb_mapped_memory + 0x0000000000307fb8 _utlb_addr + 0x0000000000307fc8 _utlb_data + 0x0000000000307fd8 _utlb_mapped_memory + .text 0x00000000003080b0 0x9c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(topti.c.o) + 0x00000000003080b0 _dsize + .text 0x000000000030814c 0x58 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dprint.c.o) + 0x000000000030814c _dprint + .text 0x00000000003081a4 0x56c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(tmu.c.o) + 0x00000000003084c4 _timer_setup + 0x0000000000308554 _timer_delay + 0x00000000003085b4 _timer_start + 0x00000000003085e8 _timer_reload + 0x0000000000308608 _timer_pause + 0x000000000030863c _timer_stop + 0x0000000000308698 _timer_timeout + 0x00000000003086a4 _timer_address + 0x00000000003086e0 _timer_clear + .text 0x0000000000308710 0x58 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(sleep.c.o) + 0x0000000000308710 _sleep_us + .text 0x0000000000308768 0x1d8 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(t6k11.c.o) + 0x0000000000308800 _t6k11_display + 0x00000000003088d4 _t6k11_contrast + 0x0000000000308900 _t6k11_backlight + .text 0x0000000000308940 0x150 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(cpg.c.o) + 0x0000000000308a84 _clock_freq + .text 0x0000000000308a90 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(topti-asm.s.o) + .text 0x0000000000308a90 0x58 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(bopti-asm.s.o) + 0x0000000000308a90 _bopti_asm_mono + 0x0000000000308ab6 _bopti_asm_mono_alpha + .text 0x0000000000308ae8 0x410 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(bopti.c.o) + 0x0000000000308ae8 _bopti_grid + 0x0000000000308c5c _bopti_render + 0x0000000000308d8c _bopti_render_clip + 0x0000000000308ea0 _bopti_render_noclip + .text 0x0000000000308ef8 0x2c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(vbr.s.o) + 0x0000000000308ef8 _gint_setvbr + .text 0x0000000000308f24 0x78 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(gint.c.o) + 0x0000000000308f24 _gint_intlevel + 0x0000000000308f78 _gint_inthandler + .text 0x0000000000308f9c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.S.o) + .text 0x0000000000308f9c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.s.o) + .text 0x0000000000308f9c 0x36c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/liblog-fx.a(liblog.c.o) + 0x000000000030907c _ll_set_size + 0x0000000000309090 _ll_set_state + 0x00000000003090b0 _ll_get_state + 0x00000000003090c0 _ll_clear + 0x000000000030910c _ll_send + 0x0000000000309180 _ll_sendp + 0x00000000003091cc _ll_display_custom + 0x0000000000309238 _ll_display + 0x000000000030924c _ll_pause + 0x00000000003092a4 _ll_panic + 0x00000000003092e0 _ll_set_panic + 0x00000000003092f0 _ll_set_level + 0x00000000003092fc _ll_get_level + .text 0x0000000000309308 0x78 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_movmem.o) + 0x0000000000309308 ___movstr + 0x0000000000309308 ___movmem + 0x000000000030933c ___movmemSI64 + 0x000000000030933c ___movstrSI64 + 0x0000000000309340 ___movstrSI60 + 0x0000000000309340 ___movmemSI60 + 0x0000000000309344 ___movmemSI56 + 0x0000000000309344 ___movstrSI56 + 0x0000000000309348 ___movstrSI52 + 0x0000000000309348 ___movmemSI52 + 0x000000000030934c ___movstrSI48 + 0x000000000030934c ___movmemSI48 + 0x0000000000309350 ___movstrSI44 + 0x0000000000309350 ___movmemSI44 + 0x0000000000309354 ___movstrSI40 + 0x0000000000309354 ___movmemSI40 + 0x0000000000309358 ___movstrSI36 + 0x0000000000309358 ___movmemSI36 + 0x000000000030935c ___movmemSI32 + 0x000000000030935c ___movstrSI32 + 0x0000000000309360 ___movmemSI28 + 0x0000000000309360 ___movstrSI28 + 0x0000000000309364 ___movstrSI24 + 0x0000000000309364 ___movmemSI24 + 0x0000000000309368 ___movmemSI20 + 0x0000000000309368 ___movstrSI20 + 0x000000000030936c ___movstrSI16 + 0x000000000030936c ___movmemSI16 + 0x0000000000309370 ___movmemSI12 + 0x0000000000309370 ___movstrSI12 + 0x0000000000309374 ___movmemSI8 + 0x0000000000309374 ___movstrSI8 + 0x0000000000309378 ___movmemSI4 + 0x0000000000309378 ___movstrSI4 + .text 0x0000000000309380 0x6c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivsi3.o) + 0x00000000003093a2 ___udivsi3 + .text 0x00000000003093ec 0x1f0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivdi3.o) + 0x00000000003093ec ___udivdi3 + .text 0x00000000003095dc 0x234 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_umoddi3.o) + 0x00000000003095dc ___umoddi3 + .text 0x0000000000309810 0x60 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udiv_qrnnd_16.o) + 0x0000000000309810 ___udiv_qrnnd_16 + .text 0x0000000000309870 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_clz.o) *(C P) -.gint.blocks 0x0000000000309a50 0x120 +.gint.blocks 0x0000000000309870 0x120 *(.gint.blocks) - .gint.blocks 0x0000000000309a50 0x40 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.S.o) - 0x0000000000309a50 _gint_inth_7305 - 0x0000000000309a70 _gint_inth_7705 - .gint.blocks 0x0000000000309a90 0xe0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.s.o) - 0x0000000000309a90 _inth_tmu - 0x0000000000309b10 _inth_etmu2 - 0x0000000000309b30 _inth_etmu_help - 0x0000000000309b50 _inth_etmux + .gint.blocks 0x0000000000309870 0x40 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.S.o) + 0x0000000000309870 _gint_inth_7305 + 0x0000000000309890 _gint_inth_7705 + .gint.blocks 0x00000000003098b0 0xe0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.s.o) + 0x00000000003098b0 _inth_tmu + 0x0000000000309930 _inth_etmu2 + 0x0000000000309950 _inth_etmu_help + 0x0000000000309970 _inth_etmux -.gint.drivers 0x0000000000309b70 0x90 - 0x0000000000309b70 _bdrv = . +.gint.drivers 0x0000000000309990 0x90 + 0x0000000000309990 _bdrv = . *(.gint.drivers.0) *(.gint.drivers.1) .gint.drivers.1 - 0x0000000000309b70 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(cpg.c.o) - 0x0000000000309b70 _drv_cpg + 0x0000000000309990 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(cpg.c.o) + 0x0000000000309990 _drv_cpg *(.gint.drivers.2) .gint.drivers.2 - 0x0000000000309b94 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(tmu.c.o) - 0x0000000000309b94 _drv_tmu + 0x00000000003099b4 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(tmu.c.o) + 0x00000000003099b4 _drv_tmu *(.gint.drivers.3) *(.gint.drivers.4) .gint.drivers.4 - 0x0000000000309bb8 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(keysc.c.o) - 0x0000000000309bb8 _drv_keysc + 0x00000000003099d8 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(keysc.c.o) + 0x00000000003099d8 _drv_keysc *(.gint.drivers.5) .gint.drivers.5 - 0x0000000000309bdc 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(t6k11.c.o) - 0x0000000000309bdc _drv_t6k11 + 0x00000000003099fc 0x24 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(t6k11.c.o) + 0x00000000003099fc _drv_t6k11 *(.gint.drivers.6) - 0x0000000000309c00 _edrv = . + 0x0000000000309a20 _edrv = . -.rodata 0x0000000000309c00 0xaf1c +.rodata 0x0000000000309a20 0xaf1c *(.rodata.4) *(.rodata .rodata.*) .rodata.str1.4 - 0x0000000000309c00 0xe build-fx/src/levelchanger.c.o + 0x0000000000309a20 0xe build-fx/src/levelchanger.c.o 0x12 (size before relaxing) - *fill* 0x0000000000309c0e 0x2 - .rodata 0x0000000000309c10 0x5de8 build-fx/src/level.c.o + *fill* 0x0000000000309a2e 0x2 + .rodata 0x0000000000309a30 0x5de8 build-fx/src/level.c.o .rodata.str1.4 - 0x000000000030f9f8 0x6 build-fx/src/level.c.o - *fill* 0x000000000030f9fe 0x2 + 0x000000000030f818 0x6 build-fx/src/level.c.o + *fill* 0x000000000030f81e 0x2 .rodata.str1.4 - 0x000000000030fa00 0x22 build-fx/src/config.c.o - *fill* 0x000000000030fa22 0x2 + 0x000000000030f820 0x22 build-fx/src/config.c.o + *fill* 0x000000000030f842 0x2 .rodata.str1.4 - 0x000000000030fa24 0x1a build-fx/src/score.c.o + 0x000000000030f844 0x1a build-fx/src/score.c.o 0x1e (size before relaxing) - *fill* 0x000000000030fa3e 0x2 - .rodata 0x000000000030fa40 0x130 build-fx/src/tile.c.o - 0x000000000030fa40 _tplateforme - 0x000000000030fa50 _mario_big - 0x000000000030fa60 _mario_small - 0x000000000030fa70 _bullet - 0x000000000030fa80 _fleur - 0x000000000030fa90 _mario_starman - 0x000000000030faa0 _life_1up - 0x000000000030fab0 _champi - 0x000000000030fac0 _bloc - 0x000000000030fad0 _end_level - 0x000000000030fae0 _castle - 0x000000000030faf0 _colline - 0x000000000030fb00 _buisson - 0x000000000030fb10 _nuage - 0x000000000030fb20 _coin - 0x000000000030fb30 _gift - 0x000000000030fb40 _earth - 0x000000000030fb50 _brick - 0x000000000030fb60 _tuyau + *fill* 0x000000000030f85e 0x2 + .rodata 0x000000000030f860 0x130 build-fx/src/tile.c.o + 0x000000000030f860 _tplateforme + 0x000000000030f870 _mario_big + 0x000000000030f880 _mario_small + 0x000000000030f890 _bullet + 0x000000000030f8a0 _fleur + 0x000000000030f8b0 _mario_starman + 0x000000000030f8c0 _life_1up + 0x000000000030f8d0 _champi + 0x000000000030f8e0 _bloc + 0x000000000030f8f0 _end_level + 0x000000000030f900 _castle + 0x000000000030f910 _colline + 0x000000000030f920 _buisson + 0x000000000030f930 _nuage + 0x000000000030f940 _coin + 0x000000000030f950 _gift + 0x000000000030f960 _earth + 0x000000000030f970 _brick + 0x000000000030f980 _tuyau .rodata.str1.4 - 0x000000000030fb70 0x63 build-fx/src/world.c.o - *fill* 0x000000000030fbd3 0x1 - .rodata 0x000000000030fbd4 0x28 build-fx/src/keyboard.c.o - .rodata 0x000000000030fbfc 0x30 build-fx/src/ennemi.c.o - 0x000000000030fbfc _ennemi_heights - 0x000000000030fc14 _ennemi_widths - .rodata 0x000000000030fc2c 0x204 build-fx/assets/fonts/mario.png.o - 0x000000000030fc2c _font_mario - 0x000000000030fe30 _font_mario_end - .rodata 0x000000000030fe30 0x20 build-fx/assets/img/bonus.png.o - 0x000000000030fe30 _img_bonus - 0x000000000030fe50 _img_bonus_end - .rodata 0x000000000030fe50 0x24 build-fx/assets/img/bloc.png.o - 0x000000000030fe50 _img_bloc - 0x000000000030fe74 _img_bloc_end - .rodata 0x000000000030fe74 0x404 build-fx/assets/img/ram.png.o - 0x000000000030fe74 _img_ram - 0x0000000000310278 _img_ram_end - .rodata 0x0000000000310278 0x58 build-fx/assets/img/w5.png.o - 0x0000000000310278 _img_w5 - 0x00000000003102d0 _img_w5_end - .rodata 0x00000000003102d0 0x404 build-fx/assets/img/options.png.o - 0x00000000003102d0 _img_options - 0x00000000003106d4 _img_options_end - .rodata 0x00000000003106d4 0x44 build-fx/assets/img/fleur.png.o - 0x00000000003106d4 _img_fleur - 0x0000000000310718 _img_fleur_end - .rodata 0x0000000000310718 0x58 build-fx/assets/img/w2.png.o - 0x0000000000310718 _img_w2 - 0x0000000000310770 _img_w2_end - .rodata 0x0000000000310770 0x404 build-fx/assets/img/main.png.o - 0x0000000000310770 _img_main - 0x0000000000310b74 _img_main_end - .rodata 0x0000000000310b74 0xc4 build-fx/assets/img/flag.png.o - 0x0000000000310b74 _img_flag - 0x0000000000310c38 _img_flag_end - .rodata 0x0000000000310c38 0x404 build-fx/assets/img/new_level.png.o - 0x0000000000310c38 _img_new_level - 0x000000000031103c _img_new_level_end - .rodata 0x000000000031103c 0x4c build-fx/assets/img/brick.png.o - 0x000000000031103c _img_brick - 0x0000000000311088 _img_brick_end - .rodata 0x0000000000311088 0xc4 build-fx/assets/img/koopa_rouge.png.o - 0x0000000000311088 _img_koopa_rouge - 0x000000000031114c _img_koopa_rouge_end - .rodata 0x000000000031114c 0xbc build-fx/assets/img/menu_pause.png.o - 0x000000000031114c _img_menu_pause - 0x0000000000311208 _img_menu_pause_end - .rodata 0x0000000000311208 0x18 build-fx/assets/img/select_arrow.png.o - 0x0000000000311208 _img_select_arrow - 0x0000000000311220 _img_select_arrow_end - .rodata 0x0000000000311220 0x804 build-fx/assets/img/dev.png.o - 0x0000000000311220 _img_dev - 0x0000000000311a24 _img_dev_end - .rodata 0x0000000000311a24 0x24 build-fx/assets/img/death.png.o - 0x0000000000311a24 _img_death - 0x0000000000311a48 _img_death_end - .rodata 0x0000000000311a48 0x404 build-fx/assets/img/mainmenu.png.o - 0x0000000000311a48 _img_mainmenu - 0x0000000000311e4c _img_mainmenu_end - .rodata 0x0000000000311e4c 0x58 build-fx/assets/img/w3.png.o - 0x0000000000311e4c _img_w3 - 0x0000000000311ea4 _img_w3_end - .rodata 0x0000000000311ea4 0x404 build-fx/assets/img/time_over.png.o - 0x0000000000311ea4 _img_time_over - 0x00000000003122a8 _img_time_over_end - .rodata 0x00000000003122a8 0x4c build-fx/assets/img/coin.png.o - 0x00000000003122a8 _img_coin - 0x00000000003122f4 _img_coin_end - .rodata 0x00000000003122f4 0x24 build-fx/assets/img/champi.png.o - 0x00000000003122f4 _img_champi - 0x0000000000312318 _img_champi_end - .rodata 0x0000000000312318 0xdc build-fx/assets/img/mariosmall.png.o - 0x0000000000312318 _img_mariosmall - 0x00000000003123f4 _img_mariosmall_end - .rodata 0x00000000003123f4 0x404 build-fx/assets/img/levelchanger.png.o - 0x00000000003123f4 _img_levelchanger - 0x00000000003127f8 _img_levelchanger_end - .rodata 0x00000000003127f8 0x28 build-fx/assets/img/gift.png.o - 0x00000000003127f8 _img_gift - 0x0000000000312820 _img_gift_end - .rodata 0x0000000000312820 0x44 build-fx/assets/img/buisson.png.o - 0x0000000000312820 _img_buisson - 0x0000000000312864 _img_buisson_end - .rodata 0x0000000000312864 0x84 build-fx/assets/img/colline.png.o - 0x0000000000312864 _img_colline - 0x00000000003128e8 _img_colline_end - .rodata 0x00000000003128e8 0x24 build-fx/assets/img/star.png.o - 0x00000000003128e8 _img_star - 0x000000000031290c _img_star_end - .rodata 0x000000000031290c 0x224 build-fx/assets/img/mariobig.png.o - 0x000000000031290c _img_mariobig - 0x0000000000312b30 _img_mariobig_end - .rodata 0x0000000000312b30 0x804 build-fx/assets/img/error.png.o - 0x0000000000312b30 _img_error - 0x0000000000313334 _img_error_end - .rodata 0x0000000000313334 0x44 build-fx/assets/img/1up.png.o - 0x0000000000313334 _img_1up - 0x0000000000313378 _img_1up_end - .rodata 0x0000000000313378 0x4c build-fx/assets/img/carapace_rouge.png.o - 0x0000000000313378 _img_carapace_rouge - 0x00000000003133c4 _img_carapace_rouge_end - .rodata 0x00000000003133c4 0xb8 build-fx/assets/img/tuyau.png.o - 0x00000000003133c4 _img_tuyau - 0x000000000031347c _img_tuyau_end - .rodata 0x000000000031347c 0x24 build-fx/assets/img/bullet.png.o - 0x000000000031347c _img_bullet - 0x00000000003134a0 _img_bullet_end - .rodata 0x00000000003134a0 0x4c build-fx/assets/img/carapace_verte.png.o - 0x00000000003134a0 _img_carapace_verte - 0x00000000003134ec _img_carapace_verte_end - .rodata 0x00000000003134ec 0x44 build-fx/assets/img/nuage.png.o - 0x00000000003134ec _img_nuage - 0x0000000000313530 _img_nuage_end - .rodata 0x0000000000313530 0x10 build-fx/assets/img/plateforme.png.o - 0x0000000000313530 _img_plateforme - 0x0000000000313540 _img_plateforme_end - .rodata 0x0000000000313540 0xc4 build-fx/assets/img/koopa_verte.png.o - 0x0000000000313540 _img_koopa_verte - 0x0000000000313604 _img_koopa_verte_end - .rodata 0x0000000000313604 0x404 build-fx/assets/img/game_over.png.o - 0x0000000000313604 _img_game_over - 0x0000000000313a08 _img_game_over_end - .rodata 0x0000000000313a08 0x404 build-fx/assets/img/level.png.o - 0x0000000000313a08 _img_level - 0x0000000000313e0c _img_level_end - .rodata 0x0000000000313e0c 0xe4 build-fx/assets/img/castle.png.o - 0x0000000000313e0c _img_castle - 0x0000000000313ef0 _img_castle_end - .rodata 0x0000000000313ef0 0x4c build-fx/assets/img/goomba.png.o - 0x0000000000313ef0 _img_goomba - 0x0000000000313f3c _img_goomba_end - .rodata 0x0000000000313f3c 0x4c build-fx/assets/img/stone.png.o - 0x0000000000313f3c _img_stone - 0x0000000000313f88 _img_stone_end - .rodata 0x0000000000313f88 0x24 build-fx/assets/img/tickbox.png.o - 0x0000000000313f88 _img_tickbox - 0x0000000000313fac _img_tickbox_end - .rodata 0x0000000000313fac 0x58 build-fx/assets/img/w4.png.o - 0x0000000000313fac _img_w4 - 0x0000000000314004 _img_w4_end - .rodata 0x0000000000314004 0x58 build-fx/assets/img/w1.png.o - 0x0000000000314004 _img_w1 - 0x000000000031405c _img_w1_end - .rodata 0x000000000031405c 0x404 build-fx/assets/img/lvl0.png.o - 0x000000000031405c _img_lvl0 - 0x0000000000314460 _img_lvl0_end + 0x000000000030f990 0x63 build-fx/src/world.c.o + *fill* 0x000000000030f9f3 0x1 + .rodata 0x000000000030f9f4 0x28 build-fx/src/keyboard.c.o + .rodata 0x000000000030fa1c 0x30 build-fx/src/ennemi.c.o + 0x000000000030fa1c _ennemi_heights + 0x000000000030fa34 _ennemi_widths + .rodata 0x000000000030fa4c 0x204 build-fx/assets/fonts/mario.png.o + 0x000000000030fa4c _font_mario + 0x000000000030fc50 _font_mario_end + .rodata 0x000000000030fc50 0x20 build-fx/assets/img/bonus.png.o + 0x000000000030fc50 _img_bonus + 0x000000000030fc70 _img_bonus_end + .rodata 0x000000000030fc70 0x24 build-fx/assets/img/bloc.png.o + 0x000000000030fc70 _img_bloc + 0x000000000030fc94 _img_bloc_end + .rodata 0x000000000030fc94 0x404 build-fx/assets/img/ram.png.o + 0x000000000030fc94 _img_ram + 0x0000000000310098 _img_ram_end + .rodata 0x0000000000310098 0x58 build-fx/assets/img/w5.png.o + 0x0000000000310098 _img_w5 + 0x00000000003100f0 _img_w5_end + .rodata 0x00000000003100f0 0x404 build-fx/assets/img/options.png.o + 0x00000000003100f0 _img_options + 0x00000000003104f4 _img_options_end + .rodata 0x00000000003104f4 0x44 build-fx/assets/img/fleur.png.o + 0x00000000003104f4 _img_fleur + 0x0000000000310538 _img_fleur_end + .rodata 0x0000000000310538 0x58 build-fx/assets/img/w2.png.o + 0x0000000000310538 _img_w2 + 0x0000000000310590 _img_w2_end + .rodata 0x0000000000310590 0x404 build-fx/assets/img/main.png.o + 0x0000000000310590 _img_main + 0x0000000000310994 _img_main_end + .rodata 0x0000000000310994 0xc4 build-fx/assets/img/flag.png.o + 0x0000000000310994 _img_flag + 0x0000000000310a58 _img_flag_end + .rodata 0x0000000000310a58 0x404 build-fx/assets/img/new_level.png.o + 0x0000000000310a58 _img_new_level + 0x0000000000310e5c _img_new_level_end + .rodata 0x0000000000310e5c 0x4c build-fx/assets/img/brick.png.o + 0x0000000000310e5c _img_brick + 0x0000000000310ea8 _img_brick_end + .rodata 0x0000000000310ea8 0xc4 build-fx/assets/img/koopa_rouge.png.o + 0x0000000000310ea8 _img_koopa_rouge + 0x0000000000310f6c _img_koopa_rouge_end + .rodata 0x0000000000310f6c 0xbc build-fx/assets/img/menu_pause.png.o + 0x0000000000310f6c _img_menu_pause + 0x0000000000311028 _img_menu_pause_end + .rodata 0x0000000000311028 0x18 build-fx/assets/img/select_arrow.png.o + 0x0000000000311028 _img_select_arrow + 0x0000000000311040 _img_select_arrow_end + .rodata 0x0000000000311040 0x804 build-fx/assets/img/dev.png.o + 0x0000000000311040 _img_dev + 0x0000000000311844 _img_dev_end + .rodata 0x0000000000311844 0x24 build-fx/assets/img/death.png.o + 0x0000000000311844 _img_death + 0x0000000000311868 _img_death_end + .rodata 0x0000000000311868 0x404 build-fx/assets/img/mainmenu.png.o + 0x0000000000311868 _img_mainmenu + 0x0000000000311c6c _img_mainmenu_end + .rodata 0x0000000000311c6c 0x58 build-fx/assets/img/w3.png.o + 0x0000000000311c6c _img_w3 + 0x0000000000311cc4 _img_w3_end + .rodata 0x0000000000311cc4 0x404 build-fx/assets/img/time_over.png.o + 0x0000000000311cc4 _img_time_over + 0x00000000003120c8 _img_time_over_end + .rodata 0x00000000003120c8 0x4c build-fx/assets/img/coin.png.o + 0x00000000003120c8 _img_coin + 0x0000000000312114 _img_coin_end + .rodata 0x0000000000312114 0x24 build-fx/assets/img/champi.png.o + 0x0000000000312114 _img_champi + 0x0000000000312138 _img_champi_end + .rodata 0x0000000000312138 0xdc build-fx/assets/img/mariosmall.png.o + 0x0000000000312138 _img_mariosmall + 0x0000000000312214 _img_mariosmall_end + .rodata 0x0000000000312214 0x404 build-fx/assets/img/levelchanger.png.o + 0x0000000000312214 _img_levelchanger + 0x0000000000312618 _img_levelchanger_end + .rodata 0x0000000000312618 0x28 build-fx/assets/img/gift.png.o + 0x0000000000312618 _img_gift + 0x0000000000312640 _img_gift_end + .rodata 0x0000000000312640 0x44 build-fx/assets/img/buisson.png.o + 0x0000000000312640 _img_buisson + 0x0000000000312684 _img_buisson_end + .rodata 0x0000000000312684 0x84 build-fx/assets/img/colline.png.o + 0x0000000000312684 _img_colline + 0x0000000000312708 _img_colline_end + .rodata 0x0000000000312708 0x24 build-fx/assets/img/star.png.o + 0x0000000000312708 _img_star + 0x000000000031272c _img_star_end + .rodata 0x000000000031272c 0x224 build-fx/assets/img/mariobig.png.o + 0x000000000031272c _img_mariobig + 0x0000000000312950 _img_mariobig_end + .rodata 0x0000000000312950 0x804 build-fx/assets/img/error.png.o + 0x0000000000312950 _img_error + 0x0000000000313154 _img_error_end + .rodata 0x0000000000313154 0x44 build-fx/assets/img/1up.png.o + 0x0000000000313154 _img_1up + 0x0000000000313198 _img_1up_end + .rodata 0x0000000000313198 0x4c build-fx/assets/img/carapace_rouge.png.o + 0x0000000000313198 _img_carapace_rouge + 0x00000000003131e4 _img_carapace_rouge_end + .rodata 0x00000000003131e4 0xb8 build-fx/assets/img/tuyau.png.o + 0x00000000003131e4 _img_tuyau + 0x000000000031329c _img_tuyau_end + .rodata 0x000000000031329c 0x24 build-fx/assets/img/bullet.png.o + 0x000000000031329c _img_bullet + 0x00000000003132c0 _img_bullet_end + .rodata 0x00000000003132c0 0x4c build-fx/assets/img/carapace_verte.png.o + 0x00000000003132c0 _img_carapace_verte + 0x000000000031330c _img_carapace_verte_end + .rodata 0x000000000031330c 0x44 build-fx/assets/img/nuage.png.o + 0x000000000031330c _img_nuage + 0x0000000000313350 _img_nuage_end + .rodata 0x0000000000313350 0x10 build-fx/assets/img/plateforme.png.o + 0x0000000000313350 _img_plateforme + 0x0000000000313360 _img_plateforme_end + .rodata 0x0000000000313360 0xc4 build-fx/assets/img/koopa_verte.png.o + 0x0000000000313360 _img_koopa_verte + 0x0000000000313424 _img_koopa_verte_end + .rodata 0x0000000000313424 0x404 build-fx/assets/img/game_over.png.o + 0x0000000000313424 _img_game_over + 0x0000000000313828 _img_game_over_end + .rodata 0x0000000000313828 0x404 build-fx/assets/img/level.png.o + 0x0000000000313828 _img_level + 0x0000000000313c2c _img_level_end + .rodata 0x0000000000313c2c 0xe4 build-fx/assets/img/castle.png.o + 0x0000000000313c2c _img_castle + 0x0000000000313d10 _img_castle_end + .rodata 0x0000000000313d10 0x4c build-fx/assets/img/goomba.png.o + 0x0000000000313d10 _img_goomba + 0x0000000000313d5c _img_goomba_end + .rodata 0x0000000000313d5c 0x4c build-fx/assets/img/stone.png.o + 0x0000000000313d5c _img_stone + 0x0000000000313da8 _img_stone_end + .rodata 0x0000000000313da8 0x24 build-fx/assets/img/tickbox.png.o + 0x0000000000313da8 _img_tickbox + 0x0000000000313dcc _img_tickbox_end + .rodata 0x0000000000313dcc 0x58 build-fx/assets/img/w4.png.o + 0x0000000000313dcc _img_w4 + 0x0000000000313e24 _img_w4_end + .rodata 0x0000000000313e24 0x58 build-fx/assets/img/w1.png.o + 0x0000000000313e24 _img_w1 + 0x0000000000313e7c _img_w1_end + .rodata 0x0000000000313e7c 0x404 build-fx/assets/img/lvl0.png.o + 0x0000000000313e7c _img_lvl0 + 0x0000000000314280 _img_lvl0_end .rodata.str1.4 - 0x0000000000314460 0x31 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) - *fill* 0x0000000000314491 0x3 - .rodata 0x0000000000314494 0x8 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dimage.c.o) + 0x0000000000314280 0x31 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) + *fill* 0x00000000003142b1 0x3 + .rodata 0x00000000003142b4 0x8 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dimage.c.o) .rodata.str1.4 - 0x000000000031449c 0x6 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(keysc.c.o) - *fill* 0x00000000003144a2 0x2 + 0x00000000003142bc 0x6 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(keysc.c.o) + *fill* 0x00000000003142c2 0x2 .rodata.str1.4 - 0x00000000003144a4 0x11a /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(exch.c.o) + 0x00000000003142c4 0x11a /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(exch.c.o) 0x11e (size before relaxing) - *fill* 0x00000000003145be 0x2 - .rodata 0x00000000003145c0 0x18 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(topti.c.o) + *fill* 0x00000000003143de 0x2 + .rodata 0x00000000003143e0 0x18 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(topti.c.o) .rodata.str1.4 - 0x00000000003145d8 0x4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(tmu.c.o) - .rodata 0x00000000003145dc 0x408 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(font5x7.png.o) - 0x00000000003145dc _gint_font5x7 - 0x00000000003149e4 _gint_font5x7_end + 0x00000000003143f8 0x4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(tmu.c.o) + .rodata 0x00000000003143fc 0x408 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(font5x7.png.o) + 0x00000000003143fc _gint_font5x7 + 0x0000000000314804 _gint_font5x7_end .rodata.str1.4 - 0x00000000003149e4 0x6 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(t6k11.c.o) - *fill* 0x00000000003149ea 0x2 + 0x0000000000314804 0x6 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(t6k11.c.o) + *fill* 0x000000000031480a 0x2 .rodata.str1.4 - 0x00000000003149ec 0x4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(cpg.c.o) - .rodata 0x00000000003149f0 0x10 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(bopti.c.o) + 0x000000000031480c 0x4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(cpg.c.o) + .rodata 0x0000000000314810 0x10 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(bopti.c.o) .rodata.str1.4 - 0x0000000000314a00 0x1b /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/liblog-fx.a(liblog.c.o) - *fill* 0x0000000000314a1b 0x1 - .rodata 0x0000000000314a1c 0x100 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_clz.o) - 0x0000000000314a1c ___clz_tab + 0x0000000000314820 0x1b /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/liblog-fx.a(liblog.c.o) + *fill* 0x000000000031483b 0x1 + .rodata 0x000000000031483c 0x100 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_clz.o) + 0x000000000031483c ___clz_tab -.rela.dyn 0x0000000000314b1c 0x0 - .rela.text 0x0000000000314b1c 0x0 build-fx/src/levelchanger.c.o +.rela.dyn 0x000000000031493c 0x0 + .rela.text 0x000000000031493c 0x0 build-fx/src/levelchanger.c.o .rela.pretext.entry - 0x0000000000314b1c 0x0 build-fx/src/levelchanger.c.o + 0x000000000031493c 0x0 build-fx/src/levelchanger.c.o 0x0000000008100000 . = ORIGIN (ram) .bss 0x0000000008100000 0x930 0x0000000008100000 _rbss = . *(.bss COMMON) + .bss 0x0000000008100000 0x0 build-fx/src/base.c.o .bss 0x0000000008100000 0x0 build-fx/src/levelchanger.c.o COMMON 0x0000000008100000 0x4 build-fx/src/levelchanger.c.o 0x0000000008100000 _frame_id @@ -808,13 +823,14 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a 0x0000000008100014 _pieces 0x0000000008100018 _combo .bss 0x0000000008100020 0x7c build-fx/src/tuyau.c.o + .bss 0x000000000810009c 0x0 build-fx/src/bullet.c.o .bss 0x000000000810009c 0x4 build-fx/src/tile.c.o 0x000000000810009c _dark_theme .bss 0x00000000081000a0 0x8 build-fx/src/plateforme.c.o 0x00000000081000a0 _plateformes 0x00000000081000a4 _plateforme_table_size .bss 0x00000000081000a8 0x0 build-fx/src/box.c.o - .bss 0x00000000081000a8 0x20 build-fx/src/world.c.o + .bss 0x00000000081000a8 0x1c build-fx/src/world.c.o 0x00000000081000a8 _death 0x00000000081000ac _w_mario_starty 0x00000000081000b0 _w_mario_startx @@ -822,28 +838,28 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a 0x00000000081000b8 _w_current_x 0x00000000081000bc _w_fond 0x00000000081000c0 _w_current - .bss 0x00000000081000c8 0x4 build-fx/src/framerate.c.o - .bss 0x00000000081000cc 0x0 build-fx/src/bonus.c.o - .bss 0x00000000081000cc 0x2d4 build-fx/src/save.c.o - 0x00000000081000cc _progress_status - 0x00000000081000d0 _level_starfrags - 0x0000000008100184 _level_coins - 0x0000000008100238 _level_times - 0x00000000081002ec _level_scores - .bss 0x00000000081003a0 0x24 build-fx/src/mario.c.o - 0x00000000081003a0 _global_quit - 0x00000000081003a4 _mario_star_mode - 0x00000000081003a8 _mario_immunity - 0x00000000081003ac _mario_dead - 0x00000000081003b0 _mario_has_bullets - 0x00000000081003b4 _mario_x_max - 0x00000000081003b8 _id_frame - .bss 0x00000000081003c4 0x0 build-fx/src/main.c.o - .bss 0x00000000081003c4 0x18 build-fx/src/keyboard.c.o - 0x00000000081003c4 _keys - .bss 0x00000000081003dc 0x8 build-fx/src/ennemi.c.o - 0x00000000081003dc _ennemis_global_size - 0x00000000081003e0 _ennemis_global + .bss 0x00000000081000c4 0x4 build-fx/src/framerate.c.o + .bss 0x00000000081000c8 0x0 build-fx/src/bonus.c.o + .bss 0x00000000081000c8 0x2d4 build-fx/src/save.c.o + 0x00000000081000c8 _progress_status + 0x00000000081000cc _level_starfrags + 0x0000000008100180 _level_coins + 0x0000000008100234 _level_times + 0x00000000081002e8 _level_scores + .bss 0x000000000810039c 0x4 build-fx/src/camera.c.o + .bss 0x00000000081003a0 0x0 build-fx/src/main.c.o + .bss 0x00000000081003a0 0x18 build-fx/src/keyboard.c.o + .bss 0x00000000081003b8 0x8 build-fx/src/ennemi.c.o + 0x00000000081003b8 _ennemis_global_size + 0x00000000081003bc _ennemis_global + .bss 0x00000000081003c0 0x24 build-fx/src/mario.c.o + 0x00000000081003c0 _global_quit + 0x00000000081003c4 _mario_star_mode + 0x00000000081003c8 _mario_immunity + 0x00000000081003cc _mario_dead + 0x00000000081003d0 _mario_has_bullets + 0x00000000081003d4 _mario_x_max + 0x00000000081003d8 _id_frame .bss 0x00000000081003e4 0x114 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) .bss 0x00000000081004f8 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(memory.c.o) .bss 0x00000000081004f8 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dtext.c.o) @@ -878,9 +894,9 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a .bss 0x0000000008100928 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.s.o) .bss 0x0000000008100928 0x4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/liblog-fx.a(liblog.c.o) .bss 0x000000000810092c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_movmem.o) + .bss 0x000000000810092c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivsi3.o) .bss 0x000000000810092c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivdi3.o) .bss 0x000000000810092c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_umoddi3.o) - .bss 0x000000000810092c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivsi3.o) .bss 0x000000000810092c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udiv_qrnnd_16.o) .bss 0x000000000810092c 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_clz.o) *(B R) @@ -888,31 +904,33 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a *fill* 0x000000000810092c 0x4 0x0000000000000930 _sbss = SIZEOF (.bss) -.data 0x0000000008100930 0x160 load address 0x0000000000314b1c - 0x0000000000314b1c _ldata = LOADADDR (.data) +.data 0x0000000008100930 0x160 load address 0x000000000031493c + 0x000000000031493c _ldata = LOADADDR (.data) 0x0000000008100930 _rdata = . *(.data .data.*) + .data 0x0000000008100930 0x0 build-fx/src/base.c.o .data 0x0000000008100930 0x0 build-fx/src/levelchanger.c.o .data 0x0000000008100930 0x0 build-fx/src/level.c.o .data 0x0000000008100930 0x54 build-fx/src/config.c.o 0x0000000008100930 _loglevels .data 0x0000000008100984 0x8 build-fx/src/score.c.o 0x0000000008100984 _combo_id - 0x0000000008100988 _lifes .data 0x000000000810098c 0x0 build-fx/src/tuyau.c.o - .data 0x000000000810098c 0x0 build-fx/src/tile.c.o - .data 0x000000000810098c 0x0 build-fx/src/plateforme.c.o - .data 0x000000000810098c 0x0 build-fx/src/box.c.o - .data 0x000000000810098c 0x0 build-fx/src/world.c.o - .data 0x000000000810098c 0x0 build-fx/src/framerate.c.o - .data 0x000000000810098c 0x3c build-fx/src/bonus.c.o + .data 0x000000000810098c 0x28 build-fx/src/bullet.c.o + .data 0x00000000081009b4 0x0 build-fx/src/tile.c.o + .data 0x00000000081009b4 0x0 build-fx/src/plateforme.c.o + .data 0x00000000081009b4 0x0 build-fx/src/box.c.o + .data 0x00000000081009b4 0x0 build-fx/src/world.c.o + .data 0x00000000081009b4 0x0 build-fx/src/framerate.c.o + .data 0x00000000081009b4 0x14 build-fx/src/bonus.c.o .data 0x00000000081009c8 0x0 build-fx/src/save.c.o + .data 0x00000000081009c8 0x0 build-fx/src/camera.c.o + .data 0x00000000081009c8 0x0 build-fx/src/main.c.o + .data 0x00000000081009c8 0x0 build-fx/src/keyboard.c.o + .data 0x00000000081009c8 0x0 build-fx/src/ennemi.c.o .data 0x00000000081009c8 0x20 build-fx/src/mario.c.o 0x00000000081009c8 _last_vx_sign 0x00000000081009cc _mario - .data 0x00000000081009e8 0x0 build-fx/src/main.c.o - .data 0x00000000081009e8 0x0 build-fx/src/keyboard.c.o - .data 0x00000000081009e8 0x0 build-fx/src/ennemi.c.o .data 0x00000000081009e8 0x68 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(stdio.c.o) 0x00000000081009e8 _kprint_formatters .data 0x0000000008100a50 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(memory.c.o) @@ -950,36 +968,36 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a .data 0x0000000008100a60 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(inth.s.o) .data 0x0000000008100a60 0x30 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/liblog-fx.a(liblog.c.o) .data 0x0000000008100a90 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_movmem.o) + .data 0x0000000008100a90 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivsi3.o) .data 0x0000000008100a90 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivdi3.o) .data 0x0000000008100a90 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_umoddi3.o) - .data 0x0000000008100a90 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udivsi3.o) .data 0x0000000008100a90 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_udiv_qrnnd_16.o) .data 0x0000000008100a90 0x0 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a(_clz.o) *(D) 0x0000000008100a90 . = ALIGN (0x10) -.data.4 0x0000000008100a90 0x0 load address 0x0000000000314c7c +.data.4 0x0000000008100a90 0x0 load address 0x0000000000314a9c *(.data.4) 0x0000000008100a90 . = ALIGN (0x10) 0x0000000000000160 _sdata = (SIZEOF (.data) + SIZEOF (.data.4)) 0x00000000e5200000 . = ORIGIN (ilram) -.ilram 0x00000000e5200000 0x0 load address 0x0000000000314c7c - 0x0000000000314c7c _lilram = LOADADDR (.ilram) +.ilram 0x00000000e5200000 0x0 load address 0x0000000000314a9c + 0x0000000000314a9c _lilram = LOADADDR (.ilram) 0x00000000e5200000 _rilram = . *(.ilram) 0x00000000e5200000 . = ALIGN (0x10) 0x00000000e5007000 . = ORIGIN (xram) -.xram 0x00000000e5007000 0x0 load address 0x0000000000314c7c - 0x0000000000314c7c _lxram = LOADADDR (.xram) +.xram 0x00000000e5007000 0x0 load address 0x0000000000314a9c + 0x0000000000314a9c _lxram = LOADADDR (.xram) 0x00000000e5007000 _rxram = . *(.xram) 0x00000000e5007000 . = ALIGN (0x10) 0x00000000e5017000 . = ORIGIN (yram) -.yram 0x00000000e5017000 0x0 load address 0x0000000000314c7c - 0x0000000000314c7c _lyram = LOADADDR (.yram) +.yram 0x00000000e5017000 0x0 load address 0x0000000000314a9c + 0x0000000000314a9c _lyram = LOADADDR (.yram) 0x00000000e5017000 _ryram = . *(.yram) 0x00000000e5017000 . = ALIGN (0x10) @@ -989,8 +1007,8 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a 0x000000008800df00 _gint_vbr = 0x8800df00 0x000000008800f400 . = ORIGIN (rram) -.gint.data 0x000000008800f400 0x140 load address 0x0000000000314c7c - 0x0000000000314c7c _lgdata = LOADADDR (.gint.data) +.gint.data 0x000000008800f400 0x140 load address 0x0000000000314a9c + 0x0000000000314a9c _lgdata = LOADADDR (.gint.data) 0x000000008800f400 _rgdata = . *(.gint.data .gint.data.*) .gint.data 0x000000008800f400 0x4 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(dupdate.c.o) @@ -1011,7 +1029,7 @@ LOAD /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgcc.a 0x000000008800f540 . = ALIGN (0x10) 0x0000000000000140 _sgdata = SIZEOF (.gint.data) -.gint.bss 0x000000008800f540 0x290 load address 0x0000000000314dbc +.gint.bss 0x000000008800f540 0x290 load address 0x0000000000314bdc *(.gint.bss .gint.bss.*) .gint.bss 0x000000008800f540 0x180 /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(keysc.c.o) .gint.bss 0x000000008800f6c0 0x1c /home/gmilan/opt/sh-elf-2.33-9.2.0/lib/gcc/sh3eb-elf/9.2.0/libgint-fx.a(setup.c.o) diff --git a/build-fx/src/bonus.c.d b/build-fx/src/bonus.c.d index 8a291e0..7eab02c 100644 --- a/build-fx/src/bonus.c.d +++ b/build-fx/src/bonus.c.d @@ -1,6 +1,6 @@ build-fx/src/bonus.c.o: src/bonus.c include/bonus.h include/box.h \ include/mario.h include/box.h include/world.h include/tile.h \ - include/score.h include/ennemi.h include/constants.h + include/score.h include/ennemi.h include/constants.h include/base.h include/bonus.h: @@ -19,3 +19,5 @@ include/score.h: include/ennemi.h: include/constants.h: + +include/base.h: diff --git a/build-fx/src/bonus.c.o b/build-fx/src/bonus.c.o index 41ea74ba3fd4019a44ab530ffd65600e56b62ffd..87624b44fb8dce3a5301721711ef1ac1d7ec4e05 100644 GIT binary patch literal 2052 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 Tc`b-*{CFGUGt3F+lHY#;^`~#j diff --git a/build-fx/src/box.c.d b/build-fx/src/box.c.d index 9d05717..fc952ce 100644 --- a/build-fx/src/box.c.d +++ b/build-fx/src/box.c.d @@ -1,5 +1,6 @@ build-fx/src/box.c.o: src/box.c include/box.h include/world.h \ - include/ennemi.h include/box.h include/score.h include/constants.h + include/ennemi.h include/box.h include/score.h include/constants.h \ + include/base.h include/box.h: @@ -12,3 +13,5 @@ include/box.h: include/score.h: include/constants.h: + +include/base.h: diff --git a/build-fx/src/box.c.o b/build-fx/src/box.c.o index 9482d003bb3e4a0bbb8379fe5e323d7b85eb6df3..55b8fef78b0c2ea69c491c25b9739cb2281be2d1 100644 GIT binary patch delta 623 zcmZ1?FhyX3vgjHH1_ovZ6ClaJpuxb&z@guEQE8%AJ0s`B3sUtrkJbNaar5L(VZL-E zo%!;SB&C)%B};~KC&6A8MyaCzkN+uI7cm;@Bndk)JYq1^b5vw3zqpe{>eg;YZXT&@ z=GMlPMlbGE<__j=fs5M{gibK_8))z7)#KUDD5WpNy`57kZ*$@&JMm7h1&(hST3S*X z6L?H`S{qCLgLTz2_rKKMvHlSQXKSOkXex6*i|L(~mP8&C8IS^#IUS7sYPF2D|LguI zHR|nSlrq$Lz@Q=6&~|Y~OM42lBX>gwiW6imP6IiilX1ac22SlAos0`LGB>xhCo#8l zCNd`|FZgI6(bAg0W6RusJf*RYas4JG%RPyWHZtq4YaGOI8*~4Cpwq5x=3siws40*H z^eV^<1DSPC8XLi(2_zaA7#Lyf_4nT}tbe{)j)j%cb&3!~LINf!0Ac8&@ojjvicqd1_ovZ6ClaJpuxb&z@g&N%aY*iBHGXR;Qs?g25tsU{kDsW6D`^& z9+a$aajXAx@mLP?tz)f@nL??|Ufd~;9n9TY7Y`>0onY+tynV=<8g=I}N*U@rV9*e3XlrS2=*VPlZA@td8^YYJaB(`wxt)v) z85lS(Om*N+nGAFWQ#SKLjZEgirbmxj+8revbryUukZ5U5;IU)wKbF#1%ea1%g3X-7 zMr)b%*EBX_xQ)5{*80nve=)vh)MiTp+Lp+ipll$s?rCG=`j>Bj_JBheiD+P8U|j!f zGam~pqpOe*kOP$C0b(GNVG@)t3uJ?V0E9Avav7j}Cm??bF#bG1>L*9Anu`E!VrT*D zPRg&)OJ;~KPS2Y>kJV}NQ&zpuISdROAZtKi0nkZMHuDt*25uPp2GA8S_8kTWUKslU z0|OhB&60t{&Y7IS*34Ki`3;*gqrzkXc6G)jlM~p*C;PJtfLS1Z2T*j!{cCTT^`G5V@mIQ~a!=Kp zyZ(6+|w=BJ!cwlt6} z2w`84bl_&-e8_iAf67Js$8 zZ@J%czGZ*Q`j+|4Q9I)sL&M~c%+edbOE5BCnJmC0UatstK9CTAFf`Ek255Y9G`<}g z-v`PM5d;Me14B5Pd;$tTdGazQQRdw2q{)Yw-2H%be0pk0c4{R^(Gms*4o0Zz6$}iV zF!mY-1}+$T0|Ns$jJ<_{fd|Ik!N9;e*_&Bei5Dhvf`Ne##y-Qqzz<_zm^_DhGB7L* zSd0g^G3mw?GLK(cP~7a%!dvJ9&_>jI#QawdDQDvQnmvOIwp2EZl) E03Nt)hX4Qo delta 531 zcmeyt)xbSLx&8wK0|PUI36Nx9&|u(V;M8x^pQgV|f1CcXH_ZCi^q<{T^;f#3dQZ)l zyZ(6+Yg=BJ!cwhWLh z2w`84a^Pm*e8_iAl0lqN$_yx@092*{(sEJE5h!&*6r>=5r=z6%j4zOtvU%bGNk-1e zADN{$ewJXYzahlHzzB4y7}&i)LIA>0L*whB@lDbAHfVfjG=3nIA0h|}9R`LN2%igX zVd~^5Ov)VDsg+6jiA5=scQLs;rl*zw`B0537#KJ}4h4ZV3=Etw_67z9E*N_Y0|PgV zy@P>)XR<%DvK}i;RSua`w zS)29Q#Tc2pCU;Ht;4o&+pPWCrjziN_udzeX^0Ka?wS@KI*Ibe!u?-01=oLQnbOHQkxxOgvEu#rAZU1W3QX5d`^WOEj$E@Qn40~82A=&fjc12n!B8s8O-ABM({N8=Zu^6ME|Pz4xf zFfcHKEKLz&U|yCi8vhv@|0~eE6ATQjC1CUF85o&R6)*~; z@#TPg77!K$(~Nphc^KarO}!r)KLU-P&cMKF0~B)rIY0!6YoQ7xfEKU<`Mr}hc+};R z6LV9G65}fv;xlv8_ YOd^bPCVL1fi*^9*a01%|A;3lg0777gaR2}S delta 835 zcmcbk)Sx^;neoF$6&DtcDSQc&FLEiI++4sC#mIUgB&FG5@_E*ytQQnPteI>RSua=u zS)29Q#Tc0_XlN49n-Safm(wmg34 z$l+-7m@!e_(7fMHdq-haA>9)nHvDrO838N>{$Ppfz#Z$S0Kr@ zWl92%5r-zw<_jVvEdFYF-*Ug@e9Qip^)2(8gLcNZmX1UoL!CrmLG=3HuzmkE06BLRL zAO`>~XY7Y6kN{f13gpk9EWx90P@Z3ulM=H`r9vcx}eNqzFs%sKx&(k&q|$^)=qG5WyNnwTZ^JGb|iuJJ*?@SXGf zeSgmR&i&3Q3+|U+qG$?ALcw9gWrnI#$W`#X6k&q{pkoKcLQ=H}S=yzgo(4Tz2Rh=- zYPP^)HCaqnQ;Vt9^lX+M=s=I;BYwwH*5J5$t@e8DsC7UOx;32(M^0r~?z)mvvxd>O zKpylHd1%V)flft=D9d$Rb$sOb!tt$R-Ldl{KWZJ(FFd~Q=TtsJsAY%xxr%KQ=@iYk z#P2jjhK#AdcHzU@@84$Ym|fiA#bBM~lhoPHPus60sGF;xdoVVr&%uMS%|DLZ4Roik zPo{^>=C2O-4O=EZYwz>kI&CrEjk?TV2X2_}h12G5-e5iu9aesOV|e}a8NL4zzv$L- z>7Mg5)*jJ+tEYM0eMT>w$hxI-oh0XS-bvOtze|pYLh>~+j=R3INr?@q4R#UhJo`PB z?O#xjwuSSdd@w(ipUemH1056j_r{J+C!b@FinB>$j+%Rn%#c&hX>iu&RAM}-$xk~NMq(aWf_W%CT;w_s>+@CC*;^vbz*rqAAOccSrM zq;&VyP}nQ?tDbll%zLHm=;~6=o5fe!*M^GD4 z8JYLWelQk+8z*Axm;J9+_|GF30O)4fKT+YIui$T1@YM=_qk?~2!9Rb3Pw^MM5iaVt z`@n-ZhGQhmg#z}j?qj{+2~BxDK|%_81@JeS(LJMk90RQBr)7@P)uQNs>zQN9Mxd zxey2kViO*+MX-2~dTgU|C-BOYF#aOy6+4C=Q1CQBjf`pRTM0Ms=hDo6F5L=nP>IL8 zY*cV3fJwo)Z>@rHUxR|N?{y092dG!D3!qxTCjlB1ESAN*TZ*yAE`|io3-*{0EzT1P zit<6uF7WdL*zr4aVE4viV2?(M#1{$S=flhOe}utcQV+T7MDRTHl_Hcz@@9xMp%Uyu zMbR)gJVdQVCHcf>Ky8z`{1)kZ$je1OJK*;OEoylj_NOFdJtAGGBnN-ih)C;UUrM6H z^`V8tVQ+}gzv6&TtR%#zsJs^Ok?koK2T}|9|3=m`%2=)q8K_wtz9dK%vKA2&YFS(r M$v;6HvPg0N04RP{i~s-t literal 2084 zcma)7Z)jUp6hH4J>5{%|O71J@T31p^c+Dnre-tK&P7xv~y2+4AMHKvyR4DAjq-$pl`!ML7(GP=oZr*!o7X7f3 zoSgGJzjM#M_uO}1rVqS$kfJFl2?cx6FAG$?i&zJp#S8~jgDGoR1DoAyv)ZlA*4@^Y zEZz4MnDC!5N$Vq}ysc#cC@Rmu~f}bRTAXUyADojH5GMuSV@%Ip4Xi_La`VjMTr} z*^evB>?iAUT}d*oPm+xZDfvPoo@`yC67}+Lp7jJhugkXgG52WC`p?v~ez-N959NdT ziTrDMWgn@hU6y3EGk13Xt!5XS+!6iL#me8WQt2F+lHZ9-=^LjDy=}?s=zVjV`n73* z;r6|^E48c5)NPRs-uvUr93N-wTL zO#$A9Sx6PTrX9fJSx0$aZ+3AT!}cNE_j0GG6U@QpKdAL8Piumf>9OXi#fIqti~RRp z_+aGni024-#4?Eme`*{%*Y+2*NBOeHNj zD*6zSIY&ngXpK1?cG!?JX0D+T1|a zDeBVS3g+}i4pP;XG|f6pLcI(Xgl^YW_hb450Ey5l>>NS5*Gx3SOwdfeL)G0>4v% z7b@^Yoa-ly{iDwJ*(3afcw#gnM14*#@Dq`+5DK7GW4t#g3eh5tfda%SF)Se%7bVQ% zz44e72?0MD2?mQ4@PW`c9}>fHeo~0XMBsgakT8yx#A9Mm^h&%CjYf_m6QA@65>nns zcq}kZ1{LS>MUIDoSIE*@fFBEl12I2O<_VH5G~(l?o%fRf)tc`si~GysILNH#P#3o1 z)cXKCwD^^+vD8NZHCp^Co}T7^4q(;%F8~RP-m%xdA7Qi_gi-9v5 zQGhoR!j4O%laDVfrjj*~dqJcVfL<(m%8y?4o6r*9tzg3-4l|;^4V8>1oEf!M#p*q! zA0RFlb-&P#K{CEP56{0O+PobYA!G1WM5I{Hq4>pLEw2X=$#W^34xb;u>roQIX{y#D toDTCT4?1KmL`gjhD*68`d)Md}5aW53gw!H}uZ;4%su9HfgixiJ_b+%eX1M?W diff --git a/build-fx/src/level.c.o b/build-fx/src/level.c.o index 240641170faa5d08e1cccbf5ee7a5a3d0c48b9ab..e0ea11553f5b533092eec50c9bc6eafe176e04e0 100644 GIT binary patch delta 8101 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 delta 8565 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

4^dA(t6PT;RTplK zw>~pdt=gPu9iFMiRq^VpoB2@jvtaS>VAf1jhi<`Vs`?Z9WU9sZ_)e?!TM`Fvfw|lq JJfRhZa5H=cGU1=18&1a0>TRHDjP!^DHDn2 z!1_nY7`Npm!~|ldi})jiYG#Z-ViZD*@vpm0CWaqw%j%3MB<<2a1f9>__6mJtyli*h z&vWl{&-ZJ&;;*m% zX-y-!#I561I4{{$qSi- zna<3COh=|Y1LFQn{IF_~QvTu|ew2Irnv0jx0r3y>4*B}-aqyI5Y}d%{0M0<)6;5|KCfXY+G6$#O*t@7Hr|TG6}b~;i6S&F|Y-f3^h*(SDPC| zmq(N2VWX#b%p7rUXiEdWH9mq|ie>#Hn~bt%PVj0FhbZ(5kl!Q5r@L=!L8C!>Ff1hV z3`2?SxUJFGxX^GsxBK11T|7D~jDw>qHKyyBu}FXHcj1BOfatrdExYM8K7_uPQr|}i#!PhYRWBM6HlsF7=_TW!x#gIr+}K2%Q}a3n&12efk1-s7n1kq0eK>%8mf`mp{+!{388;Pt|Ndk)Gk?P=Z9)^Yeyl-wzJUpRPR zFL_JcTY%5j=jG@D`4v()=ZwwJ(AwD^mJhXdzIaF`19QTppztpR4@Vgu4CCT)b}p); z0B)*rh90V41t_Qb7=V{*{N+?ojWeyJ`Xs;-s(S&ds6Gu)g4${pev_P>JE+V7sF{6j z#kQ}Y+5xbDYUcxs)3@cpeLb%{9yBP zr^!dw5;D(jL*=$t;e7+%&y$F~%JLbm(#Scx*MhC(2gnt>w-}4TM#J*#Wfu4cv)RzS delta 2151 zcmaKre{54#6vxl)uXVi5^oN5EDz94y9dTPX*!U%hEs!{VYTEgNccKGn*RO+?LfL8i;i59|WD}wY!AgL~r`u z`+m;7=bm%VxxHHU*gfDT?So~9^=hsEi$N>lz3052+yn1*?>F8t?{Dg+rcysA{WJ-@ zLEZ54M!#}{G?O{SqN~|v6y{uJ`MF6DQiCh2EwXKUk!+0~e`j7uO+Dy5<8t&}k;i96g9QZ1LFdRZ5kD{=JQ zi0WixiKE{j%&EKm9OMggi}J|Q5{LX*l=PF|4Tmn(qqSO*FAJ$(0(U_TOf+lj#sUdw zsyrTg_@??at7a*~0GPM4q1u+gl=0^PTPEJNn3l6H^e11e4uF5{GtjVHaZ3 zYn#<~yAt-9$_Cs_-7H3eil5`{E_1&lkQ5_+E~o^PA$`_k5~f|NACn49>$T}e;4v(H zvO`@17jBEM5hK3;^6)+Jkg`EBB)XLUkIO3Rl1Xw!`1JLN$g8}zBhFeI0f%30kTdq2D#Z zi;j;1o8iQt2?cht8Tj zM2f(|uw=gj3}0mU3bH|atT6u&zeCLYR}6p4@MtbeFp+D3dkjCyWnyA@A#Z@JAj<(r zJLY%Sh5~=9nDrZSSOVhDF#vg$;UL4fd3G!W3^Uxz@OuoOd75i6L*;1$^2ZEcWB8WR zo6k#e#`-J6_Zj{>mvwmzFJ^cJ!!^0QU$;KjpnHkoW`dYH>gbs_`z-6iv?ptfqDcz#6KZ02Nfb0BWf&19+b5@@#nR*rp1A zWoX}<0la8=bP;y0j_OSSYpM1DtfP7>zBH(4$A;}MY&^f8}V#< zhhnh0NmLQ6OOzL_mW=Y?yT|Gw=amaqkMSz5x}|()bsO8UHRqK%tGmdBDQ?r!To{=E F{{lg7(pvxk diff --git a/build-fx/src/mario.c.d b/build-fx/src/mario.c.d index e8f965a..b05c8f5 100644 --- a/build-fx/src/mario.c.d +++ b/build-fx/src/mario.c.d @@ -1,6 +1,6 @@ build-fx/src/mario.c.o: src/mario.c include/mario.h include/box.h \ include/tile.h include/world.h include/keyboard.h include/box.h \ - include/score.h include/bonus.h + include/score.h include/bonus.h include/bullets.h include/camera.h include/mario.h: @@ -17,3 +17,7 @@ include/box.h: include/score.h: include/bonus.h: + +include/bullets.h: + +include/camera.h: diff --git a/build-fx/src/mario.c.o b/build-fx/src/mario.c.o index debd9a399ea768c493572a3620057ac6ce362c7c..2236abbfec09dd334872b4cb520006e32d66d6c0 100644 GIT binary patch delta 1451 zcmZ8fT})eL7=FL=)6;U0Gb#k=V4NS!bS$w0b}`un4a?j}149?1Zb?tE&0v6|P%=p* zE!nXgQtKJ}R4!cbh%we=p*lVhFDv@~4rxk_Xvqy`XwUcg8hB>%9gw zjm)kxL{NjnN5mK?Dc+9`|p7^Yj}FQ9814lAkS3mawMH79$Jc z+Md>ve7rbLYpDZSgBqjFdC_er_M2OWjX{+!H>Ju}m*ff5XP8YCE8cx5^~R7P%U-)l zGR({BO&u*!>IP~2bfvWmG^|j*yt}K(7*=sP(5M+`)KYl{KDK){=z&ImHkle|%uwph z502|dM+DhP&RWd{WWFTHxl!4hi%D`G`J2*q7DjZZ4Q+9%n0qt1=r@h)dB}Y#dtnnV z*L8M_NdN@okScV!%F??3TJBmhMf86Np6xHfYf`g8jeltV1)i-N)(xyN$5<eV(@7!3WuPl*U1}*E3(Sy^b%l-A_!Z*Cn~HW%--$1!%Hf4e*Rl zHFd_QDIjZ1T`T!M$A7Yi6F-6H+?C}OX-<7y-(z&@qB>I$Hie8J&*g<_L2k+47h9|$ zu`|FwMOi~{U$Xao2PK!yT==mm-Jw_KY`pNAPK?9+Tsq~3kX*(6Rs5MMevI&1@>Lo{r>gvCcJY2d#f=Jg3S7ln&8qj6 z@MLs49GZhr1-*uk^D*D#_(oyV#WeQ_6knzK9B!i5Zna%WG)=CBqqlKzu z&K9j*C)PVSL>GT-Wm^LCBb^e%;!i&k^j9w-P8Utql4XBpvMm0YF{|f7Z-k!Yw9oTC zZ{Cmd+^q9o=S3OKe%*M5ik>_osgh_1|?rS5=BpyrIJVC*s)q5;U&f+|DKvKixbzFaW!}p{=0YCg=e>05E77if zp?EVlV&_%9Ij#Ldv}MW0&C`xN?RBSU(Y{_Fp;>cGJOT5Rqor0OWjzbA#Gx9EQWocS zClP5+8O^77N1}^`xHt)0q)Ls>Q&O58orkP3%Hdf{TBY1 z>1MMFt2a9FZAL=Z@IQ=~`?T4mS%+x-6Z|6UL?7W-*$(dAV(c9LjP>paDc^`vXWjG< zKMPQ+k96^jLrEtYtvrwPA?512_AP$I?ullB8=RTGBu)?mw`omDmok$fgaV*##^WJyK$X=>Q0F3LZAa1TM$|a#GQiRX1EvaqCitf!H}x#xc5)4! zA^&$u^!p|J5dc+9VnLhH91y=%k0J+2hyk!|#f0a!CZMJgzQ2SYF5$;YxR3A(a*G3_ z;Vt@6KyPjd07{hb*%E%GgnwS-W`iaCPWk1=x6Xuve&1kV+!qe0LEnT2d?lf`J-CSv z$-{w(G4Mr3{pxtYN65e#HS7mpP#rlH@C`(Q!N53P;?LoiDsD%O2N%dI8iyg|DH9Vz zt4&Onb(ol#`mBkG3%rSmgY_n^2PikOiFF_>v&kkg~9sT=T5A_z#YJ BKwSU; diff --git a/build-fx/src/plateforme.c.d b/build-fx/src/plateforme.c.d index 645359b..ea750a2 100644 --- a/build-fx/src/plateforme.c.d +++ b/build-fx/src/plateforme.c.d @@ -1,6 +1,6 @@ build-fx/src/plateforme.c.o: src/plateforme.c include/plateforme.h \ include/world.h include/mario.h include/box.h include/tile.h \ - include/score.h + include/score.h include/camera.h include/plateforme.h: @@ -13,3 +13,5 @@ include/box.h: include/tile.h: include/score.h: + +include/camera.h: diff --git a/build-fx/src/plateforme.c.o b/build-fx/src/plateforme.c.o index 7825e5ad11f5c1688a86cbee631c88748d45d7c4..b17bb322af0f1bc006b3acd00559f8762cce3ace 100644 GIT binary patch delta 134 zcmdnOzl48+GNa8#mEX*a^Cl~>=sT7(K!E^+Zbakvpz&uiFfdgB#Ug|l7#M-{>d6yW vs)Ujgb5n~F<0}~Ap{&ZudaNFsOIWQL8B->2U^~rtbaD;5G9$y}1?(aK-c1^< delta 152 zcmZ3&zlDE-GNaE%mEX*a8zw8T=sPwrK!E^+o{YwyhsIycz`#@i6pIjIU|ajVE)sm61Wby*G(~Q?A=ddd?3QV5B GE&>2)Y9cfM diff --git a/build-fx/src/score.c.o b/build-fx/src/score.c.o index 18dce68b453d1e873495d56046f2ea5496874056..da3c677f6df5c537ae537f774aa25b69b0b917ca 100644 GIT binary patch delta 533 zcmYk3zfZzY5XbMmmbMRysYoL62R4NSOo-9QVhqO3iAhG1N}!?%2~ijrOk5mHWI*p9 zaCFq@rilxan?D9e%+`Pyq9AA%XFRTcU_(5UKvF8VjuuO zf8!PJ=ocd1BvV~6_V`6~;FN9#pkYE=FFHi>xG?}q!u){9F-<{wnZlw_oF{EhaDlW- zQIhxXZ?rYG1&lN=Q_>zbWsAfI#LkGRDesKARc#&zD^>6thx@ju;DNa_Fp delta 361 zcmca2vPF1;GNZ~wm2^gijXf+(llL%nPY!1`h~;E}00kii21X!L1j=U-WME(cvXy|C z1BhXKT_BqWiEjpED*$l_RKEj|4blfv&%F5xvmqmUadLi9s$TMBXI4wroXoV;;>lI4 zXF%qFZQ}&l3IY-g3|ug_3!=NhX=>xKb%r*EH{9fgeJ>yDKW9% JnC!qM0s!I!GkO33 diff --git a/build-fx/src/tuyau.c.d b/build-fx/src/tuyau.c.d index e970658..8cff29f 100644 --- a/build-fx/src/tuyau.c.d +++ b/build-fx/src/tuyau.c.d @@ -1,5 +1,6 @@ build-fx/src/tuyau.c.o: src/tuyau.c include/tuyau.h include/mario.h \ - include/box.h include/keyboard.h include/world.h include/framerate.h + include/box.h include/keyboard.h include/world.h include/framerate.h \ + include/camera.h include/tuyau.h: @@ -12,3 +13,5 @@ include/keyboard.h: include/world.h: include/framerate.h: + +include/camera.h: diff --git a/build-fx/src/tuyau.c.o b/build-fx/src/tuyau.c.o index b75c9b5cac015d8f8eb9e97c13fe47bbd06824c2..53974fe290f3bc36e3699f06a66c03d6407dc8be 100644 GIT binary patch delta 517 zcmdnMy@7i|ZM~Df(oLuOFBhE>g$&y}IqP}+)$+dOe#`lm{VnTT<~IiJjBmGX@)jj- zOb~WpFyK1LZXomUuY*hizrllkuiVWs3tKn(aM+x&Vd!N|W^UPQ8obGg zxv52o@rfx}rNt$atC%$tLl_uX7$KS&BN!OCVeA+r@dO429+-Fv0|PINox#As2V>_j zF!00J1q=)VFm}mg7M5nlipd=;-i&J|Utv)Pl7GOY3adKffyq9s>Z}id_RpSN!D;~j D1*VR> delta 525 zcmdnMy@7i|ZM}=X(oL88FBe@Bg$&y}IqP}+)$+dOe#`lm{VnTT<~IiJjBmH?k{2az zOb~WpFyK1LZXomUuY*hizkxx2TJGk+g{>PMISgeC8G2dMnOn9d@EFt>GIU1d!BkluTO$<2kSkZUXu>Se(Qiw^@+y!G(iTmTuHu|z+=o| zEZ%Dn@JV0Dlluw7QwBdEd0EMsn}PGPqBFO=Vem%~JNaTUW8$avPjwAZ)JcHVi6hjt zUQGN{@W1h5>qVf`t|s#&6dTwWvUfiT_~gTJk9gGl7j0p@3+%R?ul6VFK0}o6*hk=0?#x7uB z;DfPC7#R3r>H_6 Iu3)tQ0B5g^BLDyZ diff --git a/build-fx/src/world.c.d b/build-fx/src/world.c.d index 847c0e7..fffac81 100644 --- a/build-fx/src/world.c.d +++ b/build-fx/src/world.c.d @@ -1,6 +1,7 @@ build-fx/src/world.c.o: src/world.c include/world.h include/tile.h \ include/mario.h include/box.h include/ennemi.h include/bonus.h \ - include/constants.h include/plateforme.h include/tuyau.h + include/box.h include/constants.h include/plateforme.h include/tuyau.h \ + include/bullets.h include/keyboard.h include/base.h include/camera.h include/world.h: @@ -14,8 +15,18 @@ include/ennemi.h: include/bonus.h: +include/box.h: + include/constants.h: include/plateforme.h: include/tuyau.h: + +include/bullets.h: + +include/keyboard.h: + +include/base.h: + +include/camera.h: diff --git a/build-fx/src/world.c.o b/build-fx/src/world.c.o index c1a28d426141e36aad6973c1fb2a8adc39663d45..048d899783c77c7c7ad1d09345ce148a2176ad4a 100644 GIT binary patch delta 1622 zcmZ9LT}TvB6vxlqFLxbv*Nebz#8AuyTl*cT3CR8v$fQhwn{%( z6rbRVmZUwsI`99}^R;Dm@9(4Mmh$*6`&K?-_iM^z0`$$J<;r|eZk4`6)F1a7q5cH> z;Q#24mA6aX1);keuU)8!m95;yYmKu<74~ zS|8+ZLC#6jJCIA#^d9740BepJuc9`Feh7dD-NqXqDFd7k^r)cE3i`aDFADmypl@X8 zLV!CN27m{=!&#}l#5<3pr_;RmTVd4-`rl#6D6e0F|8J&dPC-`)x+zm@tS!^Pf>`rq zw7pJUh#e68J%Yxfr$(x-OsE^168yI^bQ`co83tf41ic{WxS$h!&b78&?;*2SEO>L! z>p)uO&Dq6#clPI^k-L{OOkLN_0&)}G>qKe zub%8W9v%XzZuo1aJ}W1IQyj2;e3@ zgiT6}`{xtmo&_n^z=E3=k^_6U$Yd)9&_-6g5UsId@ETf!vBkvr{k+7uPYLlDKq)ac zC0*LO2vEi}BX_X90w^~Z+1>!;5@SFGF$Po;V<%S;<9Dnk{sbVKY{%?th%uRU#F$Ji zv4+_MNMJT~#F$MzF=k^Y#%xx39H4>h6KVD-fJU-Ur`cx!)|34Tzy{=MJ%9W4v_&@o znrP8&0EGwKmn`;s{JC3pNV5QzI=<|dE%rEHba;80$L+9V0l?3jJ%+W@6JXo11r zr6{B@Ryt%V9GLnb!We=$uuf3$QPih_xtozrUp6eVp-3NG^U5!VXq;@?BQ^jji$c zMV5`+fo$?^DC`9dLS8J~P#eJ+-432-+0pDnd0^peIMo>9iwAzo0% z4(%J){$MtKA!MgIz5@cE{%8KTv8&Vf=g!^i=HDuhcZoT!0R;I_G+j5=x0!M29*BDO zz*cHf|0VTns=04Mn@w1kbMIf+-yE3Gwwc{8ay9z}ZY0G#nn}mr=hSn)&0fdSJDGWX z_qE-H-SNZoyTxmFdK&RilBG_h^V%x=ylGt)6Yv`UI1u4q26nc{Xguf+U=O3ZLPFxlk>`>3c>br6PvJPP0DB&NPIDDxFZ=kikDu${SRdF2 z9R|U#00b%sHobzIKEF>9_MOjv%g68e`29BLr$Qky2iktAr|lC+8uam;k3WT6oKx>S zO5*&9i%0ww#3HB5&n{KV#bYyIE?PBnW))0f;O~TPS=G{VX~mqe7E4u2xT_0GUT4-s zv>RG9=P;^TvdU&H3kb?fRY-kH&3)8zD+MO)4ZJ7JJpdqY1MH`u zySQb9{{%STVWqpRih}z}@ydyIyfWHhf39s0OaKgdc>>P@3=*!Rj5-mNF-jO^943r1 zK0+8($q+_WMhK%S2MOb19wm&6IZPNAbA<2?z){4``U8IhsO0#!1LON~%(JU_L?}j8 z@Np)4SBE_UkR>~+l_QL5wZ`@X94C7kBzTPfxaVC-9pr_mu12olz1!d$QC(7}_|<4e zRZ$=q +// Bonus +// Come from boxes -void bonus_set(int type, int x, int y); +typedef enum +{ + BONUS_NONE=0, + BONUS_CHAMPI, + BONUS_FLEUR, + BONUS_1UP, + BONUS_STAR +} bonus_id; // TODO add fragment -void lance_bullet(); -void bullet_display(); +typedef struct +{ + int type; + box_t b; + int p1; +} bonus_t; + +void bonus_set(bonus_id t, int x, int y); void bonus_draw(); + void bonus_move(); #endif \ No newline at end of file diff --git a/include/box.h b/include/box.h index 2835a6f..70526d0 100755 --- a/include/box.h +++ b/include/box.h @@ -1,6 +1,10 @@ +// v0.3 #ifndef BOX_H #define BOX_H +// Box type +// Used to simulate gravity and collides + typedef struct { int x :16; @@ -12,11 +16,12 @@ typedef struct int vx :8; int vy :8; int last_vy :8; - int gravity :2; + int gravity :8; //int is_mario; } box_t; -int box_move(box_t * b); -int box_jump(box_t * b, int height); // hauteur du saut +void box_move(box_t * b); + +void box_jump(box_t * b, int height); #endif \ No newline at end of file diff --git a/include/ennemi.h b/include/ennemi.h index 13efec1..aceb69a 100644 --- a/include/ennemi.h +++ b/include/ennemi.h @@ -42,4 +42,6 @@ extern ennemi_t * ennemis_global; extern int ennemis_global_size; void display_ennemi_table(); +void move_ennemi(ennemi_t *e); + #endif \ No newline at end of file diff --git a/include/keyboard.h b/include/keyboard.h index f30bde8..3882855 100755 --- a/include/keyboard.h +++ b/include/keyboard.h @@ -1,22 +1,39 @@ -#ifndef KEYBOARD_CUSTOM_H -#define KEYBOARD_CUSTOM_H +// v0.3 +#ifndef MARIO_KEYBOARD_H +#define MARIO_KEYBOARD_H +#define KONAMI + +/* Reduced keyboard + It simulates a nes controller */ typedef enum { MK_NONE=-1, - MK_LEFT, + MK_LEFT=0, MK_RIGHT, - MK_JUMP1, - MK_UP, - MK_RUN, - MK_LITTLE -} mkey_t; -extern mkey_t keys[6]; + MK_DOWN, + MK_UP, + MK_JUMP, // Shift + MK_RUN // Alpha +} mkb_t; -void update_keyboard(); +/* This function has been coded to replace the following array + `extern mkey_t keys[6];` + It returns the specific key state + 2=newly pressed + 1=currently down + 0=up +*/ +int mkb_getstate(mkb_t const k); -void keyboard_clear(); +// Update the keyboard, should be called at each frame +void mkb_update(); -int getkey_custom(); +// Reset followed keys' states +void mkb_clear(); + +// Experimental getkey, designed to compensate for a strange bug introduced by original getkey +// /!\ return gint keycodes +int mkb_getkey(); #endif \ No newline at end of file diff --git a/include/score.h b/include/score.h index 787fe11..a5328a0 100644 --- a/include/score.h +++ b/include/score.h @@ -1,8 +1,10 @@ -#ifndef SCORE -#define SCORE +#ifndef SCORE_H +#define SCORE_H + +#define KILL_ENNEMI 105 //extern int score; -extern int lifes; +//extern int lifes; extern int finish_level; // si ==-1, continue, si 0==retry, si ==1 ou + next extern int time_id; @@ -14,6 +16,9 @@ void score_display(); void score_add_coin(); void new_level(); void new_game(); +int lifes_get(); +void lifes_lose(); +void lifes_add(); int get_time_spent(); diff --git a/include/world.h b/include/world.h index 80ec206..9e89a3d 100755 --- a/include/world.h +++ b/include/world.h @@ -105,7 +105,7 @@ void display_cell(int cx, int cy, int sx, int sy, int plan); void world_set(world_t * w); -void world_draw(int x, int y); +void world_draw(); void world_move(); int world_get_real_x0(); diff --git a/src/bonus.c b/src/bonus.c index 053a083..3626277 100644 --- a/src/bonus.c +++ b/src/bonus.c @@ -7,33 +7,14 @@ #include "ennemi.h" #include "constants.h" #include - -#define BONUS_FLEUR 4 // interne, généré depuis champi -#define BULLET 1 -typedef struct -{ - int type; - box_t b; - int p1; -} bonus_t; - -static int sgn(int x) -{ - if (x>0) - return 1; - else if (x<0) - return -1; - else - return 0; -} - +#include static bonus_t bonus ={BONUS_NONE, {0,0,TILE_W,TILE_H,0,0,0,1}, 0}; -void bonus_set(int type, int x, int y) +void bonus_set(bonus_id t, int x, int y) { - bonus.type=type; - if (mario.size==M_BIG && type==BONUS_CHAMPI) + bonus.type=t; + if (mario.size==M_BIG && t==BONUS_CHAMPI) bonus.type=BONUS_FLEUR; bonus.b.x=x; bonus.b.y=y; @@ -44,8 +25,6 @@ void bonus_set(int type, int x, int y) void bonus_move() //+collision { - if (bonus.b.x<=world_get_real_x0()-bonus.b.w || bonus.b.x>=world_get_real_x0()+127) - bonus_set(BONUS_NONE,0,0); if (bonus.type==BONUS_NONE) return; @@ -94,7 +73,7 @@ void bonus_move() //+collision { bonus_set(BONUS_NONE,0,0); score_add(1000); - lifes++; + lifes_add(); } if (bonus.type==BONUS_STAR) { @@ -111,87 +90,11 @@ void bonus_draw() if (bonus.type==BONUS_NONE) return; if (bonus.type==BONUS_CHAMPI) - draw_tile(bonus.b.x-world_get_real_x0(), bonus.b.y-world_get_real_y0(mario.p.y), &champi, 0,0); + draw_tile(bonus.b.x-camera_x(), bonus.b.y-camera_y(), &champi, 0,0); if (bonus.type==BONUS_FLEUR) - draw_tile(bonus.b.x-world_get_real_x0(), bonus.b.y-world_get_real_y0(mario.p.y), &fleur, 0,0); + draw_tile(bonus.b.x-camera_x(), bonus.b.y-camera_y(), &fleur, 0,0); if (bonus.type==BONUS_1UP) - draw_tile(bonus.b.x-world_get_real_x0(), bonus.b.y-world_get_real_y0(mario.p.y), &life_1up, 0,0); + draw_tile(bonus.b.x-camera_x(), bonus.b.y-camera_y(), &life_1up, 0,0); if (bonus.type==BONUS_STAR) - draw_tile(bonus.b.x-world_get_real_x0(), bonus.b.y-world_get_real_y0(mario.p.y), &mario_starman, 0,0); -} - - - - -/* Les balles ont les memes propriétés que les boulets et sont donc gérées ici */ - -static bonus_t bullets[2] = -{ - {0, {0,0,TILE_W/2,TILE_H/2,0,0,0,1}, 0}, - {0, {0,0,TILE_W/2,TILE_H/2,0,0,0,1}, 0} -}; - -void lance_bullet() -{ - for (int i=0; i<2; i++) - { - if (bullets[i].type==0) - { - bullets[i].type=BULLET; - bullets[i].b.x=mario.p.x; - bullets[i].b.y=mario.p.y+8; - if (last_vx_sign==0) - bullets[i].b.vx=-6; - else - bullets[i].b.vx=6; - bullets[i].b.vy=0; - bullets[i].p1=last_vx_sign; - return; - } - } -} - -void bullet_display() -{ - for (int i=0; i<2; i++) - { - if (bullets[i].type==BULLET) - draw_tile(bullets[i].b.x-world_get_real_x0(), bullets[i].b.y-world_get_real_y0(), &bullet, (1+sgn(bullets[i].b.vy))/2, 0); - } -} - -void bullet_move() -{ - for (int i=0; i<2; i++) - { - if (bullets[i].type==BULLET) - { - box_jump(&bullets[i].b,4); - box_move(&bullets[i].b); - if (bullets[i].b.vx==0) - bullets[i].type=0; - if (bullets[i].b.y<0) - bullets[i].type=0; - if (bullets[i].b.x<=world_get_real_x0()-bullets[i].b.w || bullets[i].b.x>=world_get_real_x0()+127) - bullets[i].type=0; - for (int a=0; adiscovered && t->type!=NONE) - { - bool x_collide= (bullets[i].b.x<=t->b.x && t->b.xb.x+t->b.w-1 && t->b.x+t->b.wb.y && t->b.yb.y+t->b.h-1 && t->b.y+t->b.hlife=DEAD; - bullets[i].type=0; - score_add(100); - break; - } - } - } - } - - } - + draw_tile(bonus.b.x-camera_x(), bonus.b.y-camera_y(), &mario_starman, 0,0); } \ No newline at end of file diff --git a/src/box.c b/src/box.c index 5291c15..9b5496e 100755 --- a/src/box.c +++ b/src/box.c @@ -3,16 +3,7 @@ #include "ennemi.h" #include "score.h" #include - -int sgn(int x) -{ - if (x==0) - return 0; - else if (x>0) - return 1; - return -1; -} - +#include int check_collision(box_t *b) { @@ -49,25 +40,19 @@ static void move_x(box_t * b) { for (int i=sgn_vx; i<=sgn_vx*t_vx; i++) { - int previous_tested_y=-545; - int type=CTG_EMPTY; for (int j=0; jh; j++) { - int t=(b->y+j)/8; - //if (t!=previous_tested_y) - //{ - previous_tested_y=t; - int typetemp; - if (sgn_vx>0) - typetemp=world_get_ctg(b->x+b->w-1+i*sgn_vx,b->y+j); - else - typetemp=world_get_ctg(b->x+i*sgn_vx,b->y+j); - if (/*typetemp==CTG_DEATH ||*/ typetemp==CTG_SOIL) - { - b->x+=(i-1)*sgn_vx; - b->vx=0; - return; - } + int typetemp; + if (sgn_vx>0) + typetemp=world_get_ctg(b->x+b->w-1+i*sgn_vx,b->y+j); + else + typetemp=world_get_ctg(b->x+i*sgn_vx,b->y+j); + if (typetemp==CTG_SOIL) + { + b->x+=(i-1)*sgn_vx; + b->vx=0; + return; + } //} } @@ -92,50 +77,45 @@ static void move_y(box_t * b) { for (int i=sgn_vy; i<=sgn_vy*b->vy; i++) { - int previous_tested_x=-545; for (int j=0; jw; j++) { - int t=(b->x+j)/8; - //if (t!=previous_tested_x) - //{ - previous_tested_x=t; - int typetemp; - if (sgn_vy>0) - typetemp=world_get_ctg(b->x+j ,b->y+b->h-1+i); - else - typetemp=world_get_ctg(b->x+j ,b->y-i); - if (/*typetemp==CTG_DEATH ||*/ typetemp==CTG_SOIL) + int typetemp; + if (sgn_vy>0) + typetemp=world_get_ctg(b->x+j ,b->y+b->h-1+i); + else + typetemp=world_get_ctg(b->x+j ,b->y-i); + if (typetemp==CTG_SOIL) + { + if (b->vy>0) { - if (b->vy>0) - { - int old=b->x; - if (world_get_ctg(b->x+2, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+3, b->y+b->h-1+i)==CTG_EMPTY) - b->x++; - if (world_get_ctg(b->x+1, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+2, b->y+b->h-1+i)==CTG_EMPTY) - b->x++; - if (world_get_ctg(b->x, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+1, b->y+b->h-1+i)==CTG_EMPTY) - b->x++; + int old=b->x; + if (world_get_ctg(b->x+2, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+3, b->y+b->h-1+i)==CTG_EMPTY) + b->x++; + if (world_get_ctg(b->x+1, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+2, b->y+b->h-1+i)==CTG_EMPTY) + b->x++; + if (world_get_ctg(b->x, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+1, b->y+b->h-1+i)==CTG_EMPTY) + b->x++; - if (world_get_ctg(b->x+b->w-3, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+b->w-4, b->y+b->h-1+i)==CTG_EMPTY) - b->x--; - if (world_get_ctg(b->x+b->w-2, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+b->w-3, b->y+b->h-1+i)==CTG_EMPTY) - b->x--; - if (world_get_ctg(b->x+b->w-1, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+b->w-2, b->y+b->h-1+i)==CTG_EMPTY) - b->x--; - if (old==b->x) - { - b->y+=(i-1)*sgn_vy; - b->vy=0; - return; - } - } - else + if (world_get_ctg(b->x+b->w-3, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+b->w-4, b->y+b->h-1+i)==CTG_EMPTY) + b->x--; + if (world_get_ctg(b->x+b->w-2, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+b->w-3, b->y+b->h-1+i)==CTG_EMPTY) + b->x--; + if (world_get_ctg(b->x+b->w-1, b->y+b->h-1+i)==CTG_SOIL && world_get_ctg(b->x+b->w-2, b->y+b->h-1+i)==CTG_EMPTY) + b->x--; + if (old==b->x) { b->y+=(i-1)*sgn_vy; b->vy=0; return; } } + else + { + b->y+=(i-1)*sgn_vy; + b->vy=0; + return; + } + } //} } } @@ -146,14 +126,14 @@ static void move_y(box_t * b) } -int box_move(box_t * b) +void box_move(box_t * b) { //velx move_x(b); move_y(b); } -int box_jump(box_t * b, int height) +void box_jump(box_t * b, int height) { int sgn_vy=-1*sgn(height); if (sgn_vy) diff --git a/src/config.c b/src/config.c index 5d813a4..52b146d 100644 --- a/src/config.c +++ b/src/config.c @@ -2,6 +2,7 @@ #include #include +#include #include extern image_t img_tickbox; @@ -10,8 +11,8 @@ char loglevels[6][14]={"--all","--information","--warning","--critical","--fatal void configmenu() { - keyboard_clear(); - font_t* f=dfont(0); + mkb_clear(); + font_t const * const f=dfont(0); while (1) { dclear(C_WHITE); @@ -23,11 +24,11 @@ void configmenu() dtext(40,9,&loglevels[ll_get_level()][0],C_BLACK,C_NONE); dupdate(); - int key=getkey().key; + int key=mkb_getkey(); if (key==KEY_EXIT) break; } - keyboard_clear(); + mkb_clear(); dfont(f); } \ No newline at end of file diff --git a/src/ennemi.c b/src/ennemi.c index 07e723e..afed298 100644 --- a/src/ennemi.c +++ b/src/ennemi.c @@ -4,6 +4,7 @@ #include "tile.h" #include "world.h" #include "score.h" +#include #include @@ -37,7 +38,7 @@ void display_ennemi(ennemi_t * e) } if (e->type==NONE) return; - if (e->b.x<=world_get_real_x0(0)-e->b.w || e->b.x>=world_get_real_x0(0)+127) + if (e->b.x<=camera_x(0)-e->b.w || e->b.x>=camera_x(0)+127) return; else e->discovered=1; @@ -47,35 +48,35 @@ void display_ennemi(ennemi_t * e) extern image_t img_goomba; tileset_t goomba={&img_goomba, ennemi_widths[GOOMBA_ID], ennemi_heights[GOOMBA_ID], 1}; if (e->life==1) - draw_tile(e->b.x-world_get_real_x0(0), e->b.y-world_get_real_y0(mario.p.y), &goomba, 1+(time_id/10)%2, 0); + draw_tile(e->b.x-camera_x(0), e->b.y-camera_y(mario.p.y), &goomba, 1+(time_id/10)%2, 0); if (e->life==0) - draw_tile(e->b.x-world_get_real_x0(0), e->b.y-world_get_real_y0(mario.p.y), &goomba, 0, 0); + draw_tile(e->b.x-camera_x(0), e->b.y-camera_y(mario.p.y), &goomba, 0, 0); } if (e->type==KOOPA_V_ID) { extern image_t img_koopa_verte; tileset_t koopa_verte={&img_koopa_verte, ennemi_widths[KOOPA_V_ID], ennemi_heights[KOOPA_V_ID], 1}; if (e->life==1) - draw_tile(e->b.x-world_get_real_x0(0), e->b.y-world_get_real_y0(mario.p.y), &koopa_verte, (1+e->p1)+(time_id/8)%2, 0); + draw_tile(e->b.x-camera_x(0), e->b.y-camera_y(mario.p.y), &koopa_verte, (1+e->p1)+(time_id/8)%2, 0); } if (e->type==KOOPA_R_ID) { extern image_t img_koopa_rouge; tileset_t koopa_rouge={&img_koopa_rouge, ennemi_widths[KOOPA_R_ID], ennemi_heights[KOOPA_R_ID], 1}; if (e->life==1) - draw_tile(e->b.x-world_get_real_x0(0), e->b.y-world_get_real_y0(mario.p.y), &koopa_rouge, (1+e->p1)+(time_id/8)%2, 0); + draw_tile(e->b.x-camera_x(0), e->b.y-camera_y(mario.p.y), &koopa_rouge, (1+e->p1)+(time_id/8)%2, 0); } if (e->type==CARAPACE_VERTE) { extern image_t img_carapace_verte; tileset_t carapace_verte={&img_carapace_verte, ennemi_widths[CARAPACE_VERTE], ennemi_heights[CARAPACE_VERTE], 1}; - draw_tile(e->b.x-world_get_real_x0(0), e->b.y-world_get_real_y0(mario.p.y), &carapace_verte, 0, 0); + draw_tile(e->b.x-camera_x(0), e->b.y-camera_y(mario.p.y), &carapace_verte, 0, 0); } if (e->type==CARAPACE_ROUGE) { extern image_t img_carapace_rouge; tileset_t carapace_rouge={&img_carapace_rouge, ennemi_widths[CARAPACE_ROUGE], ennemi_heights[CARAPACE_ROUGE], 1}; - draw_tile(e->b.x-world_get_real_x0(0), e->b.y-world_get_real_y0(mario.p.y), &carapace_rouge, 0, 0); + draw_tile(e->b.x-camera_x(0), e->b.y-camera_y(mario.p.y), &carapace_rouge, 0, 0); } } @@ -96,7 +97,7 @@ void hurt_mario() void move_ennemi(ennemi_t *e) { - if (e->b.xb.x>world_get_real_x0()-30) + if (e->b.xb.x>camera_x()-30) e->discovered=1; //if (e->b.x+e->b.w<=world_get_real_x0()) // e->type=NONE; diff --git a/src/keyboard.c b/src/keyboard.c index ae24cd2..d4e4834 100755 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -1,26 +1,43 @@ -#include "keyboard.h" -#include "mario.h" -#include "score.h" +#include +#include +#include #include #include -#include +//#include #include -#include "config.h" +#include -mkey_t keys[6]={0}; +static mkb_t keys[6]={0}; +int mkb_getstate(mkb_t const k) +{ + if (k!=MK_NONE) + return keys[k]; + return 0; +} - -static int konami[]={KEY_UP,KEY_UP,KEY_DOWN,KEY_DOWN,KEY_LEFT,KEY_RIGHT,KEY_LEFT,KEY_RIGHT,KEY_ALPHA,KEY_SHIFT}; - -void keyboard_clear() +void mkb_clear() { for (int i=0; i<6; i++) keys[i]=0; clearevents(); } -int menu_pause() // 1 exit, 0 continue +int mkb_getkey() +{ + mkb_clear(); + + while (1) + { + key_event_t const e=pollevent(); + if (e.type==KEYEV_DOWN) // Returns only whan a key is down + return e.key; + else + sleep(); // Processor friendly :) + } +} + +static int menu_pause() // 1 exit, 0 continue { extern image_t img_menu_pause; extern image_t img_select_arrow; @@ -39,7 +56,7 @@ int menu_pause() // 1 exit, 0 continue dimage(x+2, y+2+7*choice, &img_select_arrow); dupdate(); - switch (getkey_custom()) + switch (mkb_getkey()) { case KEY_EXIT: return 0; @@ -49,7 +66,7 @@ int menu_pause() // 1 exit, 0 continue case KEY_OPTN: choice=2; - + // fall through case KEY_EXE: if (choice==2) configmenu(); @@ -64,7 +81,7 @@ int menu_pause() // 1 exit, 0 continue if (choice<2) choice++; break; - +#ifdef KONAMI case KEY_F1: for (int a=0; a<10; a++) @@ -72,6 +89,7 @@ int menu_pause() // 1 exit, 0 continue key_event_t e=pollevent(); if (e.type==KEYEV_DOWN) { + static int const konami[]={KEY_UP,KEY_UP,KEY_DOWN,KEY_DOWN,KEY_LEFT,KEY_RIGHT,KEY_LEFT,KEY_RIGHT,KEY_ALPHA,KEY_SHIFT}; if (e.key!=konami[a]) break; } @@ -81,7 +99,8 @@ int menu_pause() // 1 exit, 0 continue { mario_bigger(); mario_has_bullets=1; - lifes=50; + for (int i=0; i<20; i++) + lifes_add(); extern image_t img_dev; dimage(0,0,&img_dev); dupdate(); @@ -91,11 +110,12 @@ int menu_pause() // 1 exit, 0 continue else e=pollevent(); } +#endif } } } -void update_keyboard() +void mkb_update() { key_event_t e; e=pollevent(); @@ -104,7 +124,7 @@ void update_keyboard() if (keys[i]==2) keys[i]=1; while(e.type!=KEYEV_NONE) { - mkey_t k = MK_NONE; + mkb_t k = MK_NONE; if(e.key==KEY_LEFT) k=MK_LEFT; @@ -112,18 +132,18 @@ void update_keyboard() k=MK_RIGHT; if(e.key==KEY_SHIFT) - k=MK_JUMP1; + k=MK_JUMP; if(e.key==KEY_UP) k=MK_UP; if(e.key==KEY_DOWN) - k=MK_LITTLE; + k=MK_DOWN; if(e.key==KEY_ALPHA) k=MK_RUN; if(keydown(KEY_EXIT)) - menu=1; + menu=1; // Displays menu after updating the keyboard @@ -144,25 +164,12 @@ void update_keyboard() { int t=menu_pause(); if (t==1) - finish_level=-1; + finish_level=-1; // Exits the level return; } } -int getkey_custom() -{ - key_event_t e; - for (int i=0; i<6; i++) - keys[i]=0; - clearevents(); - while (1) - { - e=pollevent(); - if (e.type==KEYEV_DOWN) - return e.key; - else - sleep(); - } -} \ No newline at end of file + + diff --git a/src/level.c b/src/level.c index 2819384..47c8f3c 100644 --- a/src/level.c +++ b/src/level.c @@ -376,7 +376,7 @@ void set_level(int w, int l) teleport_t t[]= { - {57,6, 212,12, MK_LITTLE}, + {57,6, 212,12, MK_DOWN}, {222,2, 178,3, MK_RIGHT} }; @@ -651,10 +651,10 @@ init_ennemies(ennemies0); teleport_t t[]= { - {6,4, 21,12, MK_LITTLE}, - {106,5, 188,12, MK_LITTLE}, - {197,2, 118,4, MK_LEFT}, - {180,5, 206,2, MK_LEFT}, + {6,4, 21,12, MK_DOWN}, + {106,5, 188,12, MK_DOWN}, + {197,2, 118,4, MK_RIGHT}, + {180,5, 206,2, MK_RIGHT}, }; set_teleporteurs(t, sizeof(t)/sizeof(teleport_t)); @@ -985,8 +985,8 @@ init_ennemies(ennemies0); teleport_t t[]= { - {106,4, 222,9, MK_LITTLE}, - {243,3, 174,4, MK_LITTLE}, + {106,4, 222,9, MK_DOWN}, + {243,3, 174,4, MK_DOWN}, {216,3, 248,2, MK_UP}, }; diff --git a/src/levelchanger.c b/src/levelchanger.c index 5e4e614..5b458eb 100644 --- a/src/levelchanger.c +++ b/src/levelchanger.c @@ -28,7 +28,7 @@ static void levelchanger(int w) while (1) { - keyboard_clear(); + mkb_clear(); dimage(0,0,&img_levelchanger); drect(xt+(2+wt)*choice, yt, xt+(wt+2)*choice+wt,yt+ht, C_INVERT); @@ -71,7 +71,7 @@ static void levelchanger(int w) //int key=getkey_opt(GETKEY_REP_ARROWS,0).key; - int key=getkey_custom(); + int key=mkb_getkey(); if (key==KEY_LEFT && choice>0) choice--; @@ -94,19 +94,19 @@ static void levelchanger(int w) get_lvl_id(w, i, lvl); dtext(53,28, lvl, C_WHITE, C_BLACK); - sprintf(lvl, "%d", lifes); + sprintf(lvl, "%d", lifes_get()); dtext(65,54, lvl, C_WHITE, C_BLACK); dupdate(); sleep_ms(3,2000); int a=play_level(w, i); if (a==0) - lifes--; + lifes_lose(); if (a==1) i++; if (a==-1) break; - if (lifes==0) + if (lifes_get()==0) { extern image_t img_game_over; dimage(0,0,&img_game_over); @@ -126,7 +126,7 @@ static void levelchanger(int w) get_lvl_id(w, choice, lvl); dtext(53,28, lvl, C_WHITE, C_BLACK); - sprintf(lvl, "%d", lifes); + sprintf(lvl, "%d", lifes_get()); dtext(65,54, lvl, C_WHITE, C_BLACK); dupdate(); sleep_ms(3,2000); @@ -161,14 +161,13 @@ static void levelchanger(int w) void launch_ui() { - keyboard_clear(); extern image_t img_mainmenu; const int xt=17,yt=9; int choice_x=0, choice_y=0; while (1) { - keyboard_clear(); + mkb_clear(); dimage(0,0,&img_mainmenu); //Show unlocked worlds @@ -178,16 +177,16 @@ void launch_ui() { case 4: dimage(xt, yt+24, &img_w5); - + // fall through case 3: dimage(xt+72, yt, &img_w4); - + // fall through case 2: dimage(xt+48, yt, &img_w3); - + // fall through case 1: dimage(xt+24, yt, &img_w2); - + // fall through case 0: dimage(xt, yt, &img_w1); } @@ -196,7 +195,7 @@ void launch_ui() dupdate(); //int key=getkey_opt(GETKEY_REP_ARROWS,0).key; - int key=getkey_custom(); + int key=mkb_getkey(); if (key==KEY_UP && choice_y>0) choice_y--; if (key==KEY_LEFT && choice_x>0) @@ -250,7 +249,7 @@ int play_level(int w, int l) timer_stop(0); return -1; } - reset_camera(); + camera_adjust(); diff --git a/src/mario.c b/src/mario.c index 63e25a4..c2d9bbb 100755 --- a/src/mario.c +++ b/src/mario.c @@ -2,11 +2,12 @@ #include "tile.h" #include "world.h" #include -#include -#include "keyboard.h" +#include #include "box.h" #include "score.h" #include "bonus.h" +#include +#include static int sgn(int x) { @@ -63,20 +64,20 @@ void mario_draw() if (mario.size==M_SMALL) { if (mario.p.vx*sgn(mario.p.vx)>=3) - draw_tile(mario.p.x-world_get_real_x0(mario.p.x), mario.p.y-world_get_real_y0(mario.p.y), &mario_small, 2*last_vx_sign+(id_frame/4)%2, 0); + draw_tile(mario.p.x-camera_x(mario.p.x), mario.p.y-camera_y(mario.p.y), &mario_small, 2*last_vx_sign+(id_frame/4)%2, 0); else if (mario.p.vx*sgn(mario.p.vx)>=1) - draw_tile(mario.p.x-world_get_real_x0(mario.p.x), mario.p.y-world_get_real_y0(mario.p.y), &mario_small, 2*last_vx_sign+(id_frame/8)%2, 0); + draw_tile(mario.p.x-camera_x(mario.p.x), mario.p.y-camera_y(mario.p.y), &mario_small, 2*last_vx_sign+(id_frame/8)%2, 0); else - draw_tile(mario.p.x-world_get_real_x0(mario.p.x), mario.p.y-world_get_real_y0(mario.p.y), &mario_small, 2*last_vx_sign, 0); + draw_tile(mario.p.x-camera_x(mario.p.x), mario.p.y-camera_y(mario.p.y), &mario_small, 2*last_vx_sign, 0); } else { if (mario.p.vx*sgn(mario.p.vx)>=3) - draw_tile(mario.p.x-world_get_real_x0(mario.p.x), mario.p.y-world_get_real_y0(mario.p.y), &mario_big, 4*last_vx_sign+(id_frame/4)%2, mario_has_bullets); + draw_tile(mario.p.x-camera_x(mario.p.x), mario.p.y-camera_y(mario.p.y), &mario_big, 4*last_vx_sign+(id_frame/4)%2, mario_has_bullets); else if (mario.p.vx*sgn(mario.p.vx)>=1) - draw_tile(mario.p.x-world_get_real_x0(mario.p.x), mario.p.y-world_get_real_y0(mario.p.y), &mario_big, 4*last_vx_sign+(id_frame/8)%2, mario_has_bullets); + draw_tile(mario.p.x-camera_x(mario.p.x), mario.p.y-camera_y(mario.p.y), &mario_big, 4*last_vx_sign+(id_frame/8)%2, mario_has_bullets); else - draw_tile(mario.p.x-world_get_real_x0(mario.p.x), mario.p.y-world_get_real_y0(mario.p.y), &mario_big, 3*last_vx_sign, mario_has_bullets); + draw_tile(mario.p.x-camera_x(mario.p.x), mario.p.y-camera_y(mario.p.y), &mario_big, 3*last_vx_sign, mario_has_bullets); } } } @@ -122,23 +123,22 @@ void mario_move() } id_frame++; - update_keyboard(); - if (mario_has_bullets==1 && keys[MK_RUN]==2) + if (mario_has_bullets==1 && mkb_getstate(MK_RUN)==2) { - lance_bullet(); + bullet_throw(); } - int jump = keys[MK_JUMP1];// || keys[MK_JUMP2]; - if (keys[MK_JUMP1]==2) //|| keys[MK_JUMP2]==2) + + if (mkb_getstate(MK_JUMP)==2) //|| keys[MK_JUMP2]==2) { if (mario.p.vx*sgn(mario.p.vx)>=6) box_jump(&mario.p, 9); else box_jump(&mario.p, 8); } - else if (mario.p.vy>=6 && jump==0) - mario.p.vy=5; + else if (mario.p.vy>=2 && mkb_getstate(MK_JUMP)==0) + mario.p.vy--; - int vx=sgn(keys[MK_RIGHT] - keys[MK_LEFT]); + int vx=sgn(mkb_getstate(MK_RIGHT) - mkb_getstate(MK_LEFT)); int c1=world_get_ctg(mario.p.x, mario.p.y-1/*+mario.p.h*/); int c2=world_get_ctg(mario.p.x+mario.p.w-1, mario.p.y-1/*+mario.p.h*/); @@ -153,7 +153,7 @@ void mario_move() mario_time_accel%=2; if (mario_time_accel==0) { - if (keys[MK_RUN] && (c1==CTG_SOIL || c2==CTG_SOIL)) + if (mkb_getstate(MK_RUN) && (c1==CTG_SOIL || c2==CTG_SOIL)) { if(mario.p.vx*sgn(mario.p.vx)<=8) mario.p.vx+=vx; @@ -164,7 +164,7 @@ void mario_move() mario.p.vx+=vx; } - if (keys[MK_RUN]==0) + if (mkb_getstate(MK_RUN)==0) { if (mario.p.vx*vx>4) mario.p.vx-=vx; @@ -201,10 +201,10 @@ void mario_move() if (vx<0 && (c1==CTG_SOIL || c2==CTG_SOIL)) last_vx_sign=0; - if (mario.p.x+mario.p.vx + gravity diff --git a/src/plateforme.c b/src/plateforme.c index 42ce748..8e9f880 100644 --- a/src/plateforme.c +++ b/src/plateforme.c @@ -4,6 +4,7 @@ #include #include #include +#include int plateforme_table_size=0; plateforme_t* plateformes=0; @@ -99,7 +100,7 @@ void display_plateformes() { p=&plateformes[i]; for (int j=p->x; j < p->x+p->width; j+=3) - draw_tile(j-world_get_real_x0(),p->y-world_get_real_y0(), &tplateforme, 0,0); + draw_tile(j-camera_x(),p->y-camera_y(), &tplateforme, 0,0); //drect(p->x-world_get_real_x0(),64-(p->y-world_get_real_y0()),p->x-world_get_real_x0()+p->width,64-(p->y-world_get_real_y0()-3), C_BLACK); } } diff --git a/src/score.c b/src/score.c index 2aa780f..3cee747 100644 --- a/src/score.c +++ b/src/score.c @@ -7,7 +7,7 @@ #include static int score=0; -int lifes=3; +static int lifes=3; int combo=0; int combo_id=-10; @@ -124,4 +124,21 @@ void score_display() int get_time_spent() { return time_spent; +} + + + +int lifes_get() +{ + return lifes; +} + +void lifes_lose() +{ + lifes --; +} + +void lifes_add() +{ + lifes ++; } \ No newline at end of file diff --git a/src/tuyau.c b/src/tuyau.c index afcb46d..7e3fa7b 100644 --- a/src/tuyau.c +++ b/src/tuyau.c @@ -3,7 +3,7 @@ #include #include #include - +#include #include static teleport_t teleporteurs[6]={0}; // 6 max @@ -35,12 +35,12 @@ void teleport_active() { if (t.key>=0) { - if (!keys[t.key]) + if (mkb_getstate(t.key)) continue; } // Animation section - if (t.key==MK_LITTLE) + if (t.key==MK_DOWN) { while (mario.p.y+mario.p.h>=8*t.y) { @@ -69,7 +69,7 @@ void teleport_active() mario.p.x=t.tx*8+4; mario.p.y=t.ty*8; mario.p.vx=0; mario.p.vy=0; - reset_camera(); + camera_adjust(); } } } \ No newline at end of file diff --git a/src/world.c b/src/world.c index 843b9fa..99c5166 100755 --- a/src/world.c +++ b/src/world.c @@ -9,6 +9,10 @@ #include "ennemi.h" #include #include +#include +#include +#include +#include world_t * w_current=0; image_t * w_fond=0; @@ -112,7 +116,7 @@ void display_cell(int cx, int cy, int sx, int sy, int plan) { if (cell->type==COIN) { - coin_t* i=cell; + coin_t const * i=(coin_t*)cell; draw_tile(sx, sy, &coin, i->taken, 0); } @@ -155,52 +159,11 @@ int world_get_ctg(int x, int y) } } -static int max(const int x, const int y) +void world_draw() { - return (xy?y:x); -} - -static int max_cy=0; - -void reset_camera() -{ - max_cy=mario.p.y; - mario_x_max=mario.p.x; -} - -int world_get_real_x0() //mario delta en 0,0 -{ //if (mario.p.x>mario_x_max) - // mario_x_max=mario.p.x; - //if (mario_x_max-40>mario.p.x) - // mario_x_max=mario.p.x; - //return min(max(mario_x_max-40,0),w_current_x*8-128); - return min(max(mario.p.x-40,0),w_current_x*8-128); -} - -void reload_camera() -{ - const int step=3; // on ajoute 1/3 - max_cy+=(mario.p.y-max_cy)/step; -} - -int world_get_real_y0() //mario delta en 0,0 -{ - //static int y=mario.p.y; - return /*min(*/max(max_cy-24,0)/*,w_current_y*8-64)*/; -} - - - -void world_draw(int x, int y) -{ - reload_camera(); - int mx0=world_get_real_x0(); - int my0=world_get_real_y0(); + + int mx0=camera_x(); + int my0=camera_x(); int sx0=mx0%8; int sy0=my0%8; int mx=mx0; @@ -242,6 +205,8 @@ void world_draw(int x, int y) void world_move() { + camera_move(0); + mkb_update(); ll_sendp(LEVEL_INFO,"\n[I;%d] Refresh wrld",frame_id); for (int i=0; i