Git Product home page Git Product logo

dragonbasic's People

Contributors

uli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

dragonbasic's Issues

Strings cannot be instantiated as local variables (Type mis-match?).

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Strings cannot be instantiated as local variables. Instead the user is given a "Type mis-match?" error. Not allowing local Strings may be design intent, but the documentation doesn't seem to mention anything about this limitation. As far as I know, documentation just mentions that local variables are faster and more efficient, so use it as much as you can.

Spaces between function names and parameter lists cause 'Expected token? EOL' errors when the original Dragon Basic allowed it.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Spaces between function names and parameter lists cause 'Expected token? EOL' errors when the original Dragon Basic allows it. Ie: 'Sub myFunction (myParameter)' vs 'Sub myFunction(myParameter)'. This might be as-designed since the new DBC isn't supposed to be 100% compatible, but I thought I'd raise the issue ether way for confirmation and tracking purposes.

Make "Unreachable code?" a warning instead of a fatal error.

Enhancement found using Dragon Basic commit ID d2ce042

When working with code, it is quite common to block off a section of code for debug purposes. However, if you do something like "Return 0", DBC is smart enough to detect that unreachable code has been found. It would be nice if DBC would log this as a warning instead of a fatal error, since it is a pain to manually comment out multiple lines of code, or find strange ways to fool the compiler into letting you get away with it.

Blit operations in graphics mode 4 and 5 are broken.

Bug found under Linux using Dragon Basic commit ID: d2ce042

When using graphics mode 4 and 5, blitting doesn't work correctly. In graphics mode 4, if you load a 256-index paletted BMP file, blit it to the screen, and perform a flip operation, nothing is shown. In fact, you can attempt to blit / write to both screen buffers and flip between them and nothing will be shown. The same behaviour appears to happen in mode 5 as well. No images will be displayed (proper or corrupt) and no errors will be generated. The user just gets a black screen.

This problem is rather important since mode 4 is the only bitmapped page flipping mode that supports full screen 256 color images (Since mode 3 doesn't have enough free memory to support double buffering/page flipping).

problem make linux

Hello,

if I do: make linux
I have the following message:

if test uname -s = Linux; then make _all PLATFORM = linux; fi
make [1]: we enter the directory "/ home / ludovic / Downloads / dragonbasic-master"
g ++ -c -g -DDB_VERSION = "" 2.0 \ "" -DAPPDIR = "" / home / ludovic / Downloads / dragonbasic-master \ "" -Wall -O2 -DBUG_FOR_BUG DBC.cpp -o DBC.o.linux
DBC.cpp: In function 'void GLB_runProgramWithArgs (char const *, const char *, char const *, const char *, bool)':
DBC.cpp: 326: 18: warning: ignoring return value of 'char * getcwd (char *, size_t)', declared with attribute warn_unused_result [-Wunused-result]
getcwd (buf, 256);
^
DBC.cpp: In function 'void GLB_pushDir (const char *)':
DBC.cpp: 339: 22: warning: ignoring return value of 'char * getcwd (char *, size_t)', declared with attribute warn_unused_result [-Wunused-result]
getcwd (dir_buf, 256);
^
g ++ -o dbc DBC.o.linux
make -C ./pimpmobile_r1 lib / libpimpmobile.a
make [2]: we enter the directory "/ home / ludovic / Downloads / dragonbasic-master / pimpmobile_r1"
Makefile: 6: *** "Please set DEVKITPRO in your environment. Export DEVKITPRO = devkitPro". Stop.
make [2]: we leave the directory "/ home / ludovic / Downloads / dragonbasic-master / pimpmobile_r1"
Makefile: 101: the recipe for the target "pimpmobile_r1 / lib / libpimpmobile.a" failed
make [1]: *** [pimpmobile_r1 / lib / libpimpmobile.a] Error 2
make [1]: we leave the directory "/ home / ludovic / Downloads / dragonbasic-master"
Makefile: 47: the recipe for the target "linux" failed
make: *** [linux] Error 2

please help me
Thanks

Leaving a space between variable name and array index causes unhelpful 'line 1: Unknown token? 1' error.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Leaving a space between variable name and array index causes unhelpful 'line 1: Unknown token? 1' error. Instead of telling you where the error occurs, it always says 'line 1' instead of the real line number. I believe the original Dragon Basic allowed for spaces (Ignored them), but the new DBC seems to be more strict on this. Might be as-designed, but the unhelpful line numbering is definitely something to look at.

Samples

Many of this samples are outdated and wont compile for this or the other reasons on this or another re-version of dragon-basic.

Most nasty bug: problems converting the forsaken old .pcx images on a linux machine.

Memory corruption occurs even when Strings allocate a maximum size of 64 words (256 bytes)

Bug found using Dragon Basic (commit ID: d2ce042) with memory corruption fix applied (commit ID: 901c0e5)

After applying the original String memory corruption fix, I was still able to observe some edge cases where memory gets corrupted with strings. Because of the complexity of the project I am working on, I'm not sure If I'm able to exactly reproduce the same issue using a reduced test case, but I was able to still at least demonstrate some kind of memory issue with one. For example:

#title "TestCase"
#include <gba.dbc>

#Constant arraySize 100
#Constant initValue (-1)
Dim integer(arraySize)
Dim string$

Sub initializeArray
Local currentIndex
Log " "
For currentIndex = 0 To arraySize
integer[currentIndex] = initValue
Next
End Sub

Sub verifyArray
Local currentIndex
Log "Verifying array..." + Chr$(13) + Chr$(10)
For currentIndex = 0 To arraySize
If Not integer[currentIndex] = initValue
Log "Memory Corrupted: " + Str$(integer[currentIndex]) + " (Index: " + Str$(currentIndex) + ")" + Chr$(13) + Chr$(10)
End If
Next
Log "Verification complete!" + Chr$(13) + Chr$(10)
End Sub

Sub runTest
Log " " ;
initializeArray
verifyArray
string$ = "SOME STRING TO CORRUPT MEMORY"
verifyArray
End Sub

start:
runTest
while
loop

In this test we simply initalize an array of integers to an obvious number (-1) and then we check the array to make sure every element returns the same value. Then we initialize our string with some value and check the array again. While the first check passes just fine, the second check (after a string is set to a value) fails. The last index appears to have changed. The following is an example of the result in VBA:

Verifying array...
Verification complete!
Verifying array...
Memory Corrupted: 1297044253 (Index: 100)
Verification complete!

As you can see, something has corrupted our last index. In my personal project I am trying to develop, I noted that this corruption happens earlier in my array, but that could be due to it being so complex (across multiple DBC files, arrays, strings, etc - We're talking a whole DBC framework library + game on top of it).

Attached to this issue is the original test case files
Testcase.zip

EDIT: It should be noted that I added empty log statements to avoid `!currently_naked' failed.' errors. The fixes that try to address that bug causes other issues with arrays (specifically, comparing string arrays produce ' unknown word compare' errors), so I did not apply those fixes to my build of Dragon Basic.

Sometimes a Sub/End Sub block will produce 'Assertion `!currently_naked' failed.' errors for no obvious reason.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Sometimes a Sub/End Sub will produce the error 'mf: MF.cpp:3688: void Parser::parseAll(): Assertion !currently_naked' failed.' with no obvious reason why. In such cases the methods affected are not empty, so there is no clear indication as to why this is happening. It might be possible to find a simple reduced test case to demonstrate this, but I haven't found one yet. It seems to be rather arbitrary when it happens. Probably easier to figure out what triggers 'Assertion !currently_naked' failed.' in MF, and then try figure out what corner edge-case would trigger this assertion when a Sub/Function clearly has code in it.

Workaround: Adding a "Log" statement to the top of the method seems to resolve this issue. Might be connected with the empty Sub/End Sub issue in some way. I assume the "Log" statement somehow indicates to MF that the method is not empty?

Note: Because of the arbitrary and randomness of this issue, this is probably more serious than others logged. Because I have yet to find a predictable reason for this problem, the only recourse a user has is to insert "Log" statements anytime it happens. If I find a small code test-case that can reproduce this issue, I'll add a comment to this issue.

Including a valid 24-bit BMP image to your project causes a segmentation fault in MF.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Including a valid 24-bit BMP image to your project causes a segmentation fault in MF. This occurs with both Windows 3.x version bitmaps (no color space information) and Windows 98/2000 version bitmaps. This issue also effects PCX images. In the Dragon Basic documentation under directives, the "#BITMAP" directive states:

Remarks: If the BMP or PCX image is 16- or 256-colors, the compiler will break it into 8x8 pixel tiles, left->right, top->bottom as is needed for the GBA LOADTILES and LOADSPRITE functions. A 24-bit image (true color) will be converted to 15-bit RGB format for the GBA bitmapped modes.

Note: This issue breaks all backwards compatibility with any project that uses bitmapped modes (ie. Mode 3) and high quality 24-bit images. This is probably what the user "thar0x29a" was complaining about before you closed his ticket, except that he lacked a thorough description of the issue at hand, and/or an understanding that you did this on your spare time and owe him nothing.

Checking the condition of a string to be empty causes MF to generate a segmentation fault.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Checking the condition of a string to be empty (Ie. "") causes MF to generate a segmentation fault. This is sometimes useful when you want to mark a String as NULL, empty, or uninitialised and you check it by seeing if it's empty or not. Since MF crashes when doing so, the users only recourse is to set a string to some unique identifier that means the same thing (Ie. "-1", "NULL", etc) and hope they never need a real string of that value.

Volume control for music and sound.

Possible enhancement identified using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

When working with Dragon Basic, I noted that for music and sound there is no way to control the volume of Direct Sound channels. That means users can't fade in/out music as gameplay/scenes change and the only recourse is to abruptly stop it. Looking at the GBA registers for sound, it sounds like "REG_SOUNDCNT_H" only allows for the following options:

Output sound ratio for chan.1-4 (0=25%,1=50%,2=100%)
Direct sound A output ratio (0=50%, 1=100%)
Direct sound B output ratio (0=50%, 1=100%)
Unused
Direct sound A to right output
Direct sound A to left output
Direct sound A Sampling rate timer (timer 0 or 1)
Direct sound A FIFO reset
Direct sound B to right output
Direct sound B to left output
Direct sound B Sampling rate timer (timer 0 or 1)
Direct sound B FIFO reset

Seems like unless some extra processing is involved in software, the hardware can only set the output volume to 50% or 100%. I know some GBA module/tracker libraries can manipulate volume, but that might all be done in software. This is probably a hard enhancement to fill, but I thought I'd mention it for informational and tracking purposes anyway.

Makefile

Well. I spend almost a day to got this compiling. Cross compiling thought 3 systems (build on linux, for windows + gba code) was not fun. Found some issues on that

  • you dont have any include flags for the win_cross branch. but since u use the windows versions of needed libs, you also need an additional INCLUDE var
  • you just use the operating system default "objcopy" whitch always results into an error

Fixed both. Would like to see this fixes here

Variables allocated adjacent to string variables results in corrupted memory.

Bug found during manual testing using Dragon Basic commit ID d2ce042

When working with string variables, I was able to observe that any variables allocated after a string variable gets corrupted memory. This can be observed with the following reduced test case:

#title "TestCase"
#include <gba.dbc>

Dim string1$
Dim string2$

start:
string1$ = "1234567890"
Log string1$ + Chr$(13) + Chr$(10)
string2$ = "ABCDEFGHIJ"
Log string2$ + Chr$(13) + Chr$(10)
Log string1$ + Chr$(13) + Chr$(10)
while
loop

In this example, you can see that "string1$" gets assigned the value "1234567890". This result is immediately logged to the debug console, with the appropriate ascii codes to skip to the next line. This works just fine. Right after, "string2$" is assigned "ABCDEFGHIJ". This result is also immediately logged, and appears to work just fine. However, if you attempt to read back "string1$" you will now find that it is corrupted. Instead of printing "1234567890" you get this:

123\nABCDEF

Where "\n" is used to represent a new line character (at least how it looks like when printed out in VBA debug) .

In this example the bug causes the first String instance to get corrupted. If instead, you follow up with an Integer instead of a second String, you will notice that the Integer value also gets corrupted. Something about the boundaries between variables isn't being respected. I first noted this problem when I was appending to a String variable like this:

myString$ = myString$ + " Something else"

And then realising that a counter variable that I previously set, which should read "5", is now something ridiculous like "159328413".

Attached to this issue is a copy of the test case in question. There might be other strange edge cases with string/string manipulation as well you might want to investigate. This seems like a pretty serious issue.

Testcase.zip

Find a way to properly allocate the size of String variables, instead of using the theoretical maximum of 64 words (256 bytes)

Issue identified in Dragon Basic as of commit ID 901c0e5.

In previous versions of Dragon Basic, Strings were allocated one word (4 bytes). From Uli's comments, there doesn't appear to be any way to specify the maximum size of a string variable. As a compromise, a patch was submitted so that we allocate the maximum of 64 words (256 bytes) instead. While this strategy indeed prevents data from being corrupted, it also wastes a bunch of memory as well. Since memory on the GBA is at a premium, we should probably try to find away to properly handle this in the future.

What do MF errors regarding "assert(abs(off) < 2048);" really mean?

When working with a large method that has many calls to other methods (with large strings as their parameters - Ie. game dialog text), I noted that at some point I got the following error:

mf: MF.cpp:918: void Output::reloc10(unsigned int, unsigned int): Assertion `abs(off) < 2048' failed.

Regardless of where in the Sub I placed my new lines, it threw that error. When I broke my Sub down into smaller Subs, then it all worked just fine. Is this because I somehow ran out of memory (stack?) for this Sub and I need to break it up? I assume so, since I can't think of any other reason. (^_^);

EDIT: I guess what I really should be doing is declaring dialog as "#Constants" instead so that everything gets stored into ROM instead?

Setting a string to be empty causes MF to generate a segmentation fault.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Setting a string to be empty (Ie. "") causes MF to generate a segmentation fault. This functionality is important since users may want to append values to a new string, but cannot do so from an empty one since MF does not allow empty strings to be defined. One example of this kind of use is padding a string with spaces to centre text with equal spaces on ether side of it. This bug is likely related to the issue "Checking the condition of a string to be empty causes MF to generate a segmentation fault." (#4)

Partial workaround: Figure out what the first character of your string is and initialise it with that value instead of (""). This works for tasks like padding strings, but does not help when you want to make a string appear uninitialised, or truly empty with no value.

Using the #PALETTE directive on 24-bit BMP files causes MF to segfault.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Using the #PALETTE directive on 24-bit BMP files causes MF to segfault. While this isn't really legal to do in DBC, MF still shouldn't segfault. Instead it should tell the user what was wrong and that #PALETTE directives arn't allowed on BMP files with a color depth of 24-bits.

Empty Sub/End Sub blocks produce 'Assertion `!skip_push` failed.' errors.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

Empty Sub/End Sub blocks produce the error 'mf: MF.cpp:2328: void Parser::codeAsm(const char*, const char*, const char*, const char*, const char*, const char*, const char*): Assertion `!skip_push' failed.'. Having empty Sub/End Sub blocks in your code is sometimes useful for creating 'stubs' which will be filled out with code later.

Allow the importing and display of BMP files less than 24-bit color depth in bitmapped mode.

Enhancement request for Dragon Basic under Linux as of commit ID 7693447

For games which use graphics mode 3 (Bitmapped mode), it would be nice if the user could import and display (Blit) BMP images that are less than 24-bit color depth. The reason being, internally images are converted to 15-bit RGB, so most of that data is unused (While taking up a lot of ROM space). For games like Visual Novels which are heavy in graphics, that could add up quickly. Especially when sharing ROM with music and sound.

Currently it seems like DBC will happily import BMPs that are indexed (256 colors), 16-Bit (R5 G6 B5), and 16-bit (X1 R5 G5 B5), however the Blit function (In bitmapped mode 3) doesn't work with these and displays corrupted output instead. For an idea about the space savings, here is a list:

240x160 Source Image gives...

24bits = 115.3kb
16bits = 76.9kb
8bits (256 colors) = 39.5kb

As you can see, if we had support for blitting 8bit color or even 16bit color in mode 3, we'd have significant ROM space savings.

Add support for double buffering in Mode 4 instead of page flipping.

Enhancement requested under Dragon Basic for Linux (Commit ID: d2ce042)

It would be nice if we could have proper double buffering support added for Mode 4 graphics instead of page flipping. With page flipping, the user must draw on the back buffer, flip the screen, then re-draw the whole screen again with the addition of new elements. Instead of asking the user to do fancy coding to handle the redrawing of elements over again (especially for complicated scenes), it would be nice if double buffering was done instead.

That is, you draw your graphics to the back buffer. Then once your done all your rendering, just call "Flip" during a vBlank to copy the back buffer data to the foreground buffer. That way, if the user wants to make additional changes to the screen, they just need to continue writing to the back buffer. No mirrored drawing or having two buffers to keep in sync. The user just updates one buffer, and when they are ready to show the results they just call "Flip".

Invalid syntax produces an unhelpful "line 1: Unknown directive? '' error instead of indicating the line number where that error occurs.

Bug found under Dragon Basic (commit ID d2ce042)

When working in Dragon Basic I noted that sometimes if you make a mistake (such as using ":" instead of ";" to start a comment line), the compiler will throw an "line 1: Unknown directive?" error. This is fine in principle, but since the line number is not accurate there is no easy way to debug this. The only recourse a user has is to remove all the code from the offending file and slowly add code back until the compiler throws the error (indicating where more scrutiny should be given).

This issue appears to be very similar to issue 10 (#10) where a different kind of error produces an equally unhelpful line number for its error message.

problem make in folder examples

I change my OS : ubuntu 18.4
i install devkitpro : sudo dkp-pacman -S gba-dev
if I do: DEVKITPRO=/home/name/devkitpro make linux runtime.gba runpimp.gba
if test uname -s = Linux ; then make _all PLATFORM=linux ; fi
make[1] : on entre dans le répertoire « /home/name/Bureau/dragonbasic-master »
g++ -c -g -DDB_VERSION=""2.0"" -DAPPDIR=""/home/name/Bureau/dragonbasic-master"" -Wall -O2 -DBUG_FOR_BUG DBC.cpp -o DBC.o.linux
DBC.cpp: In function ‘void GLB_runProgramWithArgs(const char*, const char*, const char*, const char*, bool)’:
DBC.cpp:326:8: warning: ignoring return value of ‘char* getcwd(char*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
getcwd(buf, 256);
^
DBC.cpp: In function ‘void GLB_pushDir(const char*)’:
DBC.cpp:339:8: warning: ignoring return value of ‘char* getcwd(char*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
getcwd(dir_buf, 256);
^
DBC.cpp: In member function ‘Subroutine* Subroutine::findByIdent(const char*)’:
DBC.cpp:87:2: warning: nonnull argument ‘this’ compared to NULL [-Wnonnull-compare]
if (!this)
^~
DBC.cpp: In member function ‘void Compiler::doRvalArray(BasicObject*)’:
DBC.cpp:1574:6: warning: ‘[]’ directive writing 2 bytes into a region of size between 1 and 256 [-Wformat-overflow=]
void Compiler::doRvalArray(BasicObject bobj)
^~~~~~~~
In file included from /usr/include/stdio.h:862:0,
from DBC.h:30,
from DBC.cpp:38:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:34:43: note: ‘__builtin___sprintf_chk’ output between 3 and 258 bytes into a destination of size 256
__bos (__s), __fmt, __va_arg_pack ());
^
g++ -o dbc DBC.o.linux
make -C ./pimpmobile_r1 lib/libpimpmobile.a
make[2] : on entre dans le répertoire « /home/name/Bureau/dragonbasic-master/pimpmobile_r1 »
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_gba.c -o src/pimp_gba.o -MMD -MP -MF src/pimp_gba.d
In file included from src/pimp_module.h:9,
from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_instrument.h: In function 'get_sample':
src/pimp_instrument.h:45:33: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return &((pimp_sample)get_ptr(&instr->sample_ptr))[i];
^~~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_module.h:9,
from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_instrument.h: In function 'get_vol_env':
src/pimp_instrument.h:51:67: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return (pimp_envelope)(instr->vol_env_ptr == 0 ? NULL : get_ptr(&instr->vol_env_ptr));
^~~~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function 'get_pattern_data':
src/pimp_module.h:59:38: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return (pimp_pattern_entry)get_ptr(&pat->data_ptr);
^~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function '__pimp_module_get_order':
src/pimp_module.h:65:25: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return ((char)get_ptr(&mod->order_ptr))[i];
^~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function '__pimp_module_get_pattern':
src/pimp_module.h:71:34: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return &((pimp_pattern)get_ptr(&mod->pattern_ptr))[i];
^~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function '__pimp_module_get_channel':
src/pimp_module.h:77:34: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return &((pimp_channel)get_ptr(&mod->channel_ptr))[i];
^~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function '__pimp_module_get_instrument':
src/pimp_module.h:83:37: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return &((pimp_instrument)get_ptr(&mod->instrument_ptr))[i];
^~~~~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
src/pimp_gba.c: At top level:
src/pimp_gba.c:27:1: warning: variably modified '__pimp_sound_buffers' at file scope
static s8 __pimp_sound_buffers[2][SOUND_BUFFER_SIZE] IWRAM_DATA;
^~~~~~
src/pimp_gba.c:29:1: warning: variably modified '__pimp_mix_buffer' at file scope
s32 __pimp_mix_buffer[SOUND_BUFFER_SIZE] IWRAM_DATA;
^~~
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_render.c -o src/pimp_render.o -MMD -MP -MF src/pimp_render.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_envelope.c -o src/pimp_envelope.o -MMD -MP -MF src/pimp_envelope.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_debug.c -o src/pimp_debug.o -MMD -MP -MF src/pimp_debug.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_mod_context.c -o src/pimp_mod_context.o -MMD -MP -MF src/pimp_mod_context.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -marm -c src/pimp_math.c -o src/pimp_math.iwram.o -MMD -MP -MF src/pimp_math.iwram.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -marm -c src/pimp_mixer.c -o src/pimp_mixer.iwram.o -MMD -MP -MF src/pimp_mixer.iwram.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -mthumb-interwork -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -c -o src/pimp_mixer_arm.o src/pimp_mixer_arm.S
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -mthumb-interwork -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -c -o src/pimp_mixer_clip_arm.o src/pimp_mixer_clip_arm.S
src/pimp_mixer_clip_arm.S: Assembler messages:
src/pimp_mixer_clip_arm.S:156: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:158: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:165: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:167: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:174: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:176: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:189: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:191: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:196: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:198: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:203: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:205: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:210: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:212: s suffix on comparison instruction is deprecated
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-ar rv lib/libpimpmobile.a src/pimp_gba.o src/pimp_render.o src/pimp_envelope.o src/pimp_debug.o src/pimp_mod_context.o src/pimp_math.iwram.o src/pimp_mixer.iwram.o src/pimp_mixer_arm.o src/pimp_mixer_clip_arm.o
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-ar: creating lib/libpimpmobile.a
a - src/pimp_gba.o
a - src/pimp_render.o
a - src/pimp_envelope.o
a - src/pimp_debug.o
a - src/pimp_mod_context.o
a - src/pimp_math.iwram.o
a - src/pimp_mixer.iwram.o
a - src/pimp_mixer_arm.o
a - src/pimp_mixer_clip_arm.o
make[2] : on quitte le répertoire « /home/name/Bureau/dragonbasic-master/pimpmobile_r1 »
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -Iruntime -nostdlib -I/home/name/devkitpro/libgba/include
-I./pimpmobile_r1/include -marm -T runtime/gba_cart.ld runtime/gba_crt0.s /home/name/devkitpro/devkitARM/lib/gcc/arm-none-eabi/8.1.0/crti.o
/home/name/devkitpro/devkitARM/lib/gcc/arm-none-eabi/8.1.0/crtbegin.o runtime/runpimp.c ./pimpmobile_r1/lib/libpimpmobile.a -L
/home/name/devkitpro/libgba/lib -lgcc -lsysbase -lc -lgba /home/name/devkitpro/devkitARM/lib/gcc/arm-none-eabi/8.1.0/crtend.o
/home/name/devkitpro/devkitARM/lib/gcc/arm-none-eabi/8.1.0/crtn.o -o runpimp.elf
./extract_syms.sh runpimp.elf >runtime_syms.h
g++ -c -g -DDB_VERSION=""2.0"" -DAPPDIR=""/home/name/Bureau/dragonbasic-master"" -Wall -O2 -DBUG_FOR_BUG MF.cpp -o MF.o.linux
MF.cpp: In member function ‘void Output::fixCartHeader()’:
MF.cpp:465:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(bytes, 1, 0x1c, fp);
^
MF.cpp: In member function ‘void Output::emitPalette(const char)’:
MF.cpp:681:8: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(hdr, 1, 0x18, fp);
^
MF.cpp:691:10: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(pp_rgba, 1, 4, fp);
^
MF.cpp: In member function ‘void Output::reloc8(Literal)’:
MF.cpp:840:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 2, fp);
^
MF.cpp: In member function ‘void Output::reloc12(Literal)’:
MF.cpp:871:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 4, fp);
^
MF.cpp: In member function ‘void Output::reloc24(unsigned int, unsigned int)’:
MF.cpp:896:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 4, fp);
^
MF.cpp: In member function ‘void Output::reloc10(unsigned int, unsigned int)’:
MF.cpp:916:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 2, fp);
^
MF.cpp: In member function ‘void Output::reloc8(unsigned int, unsigned int)’:
MF.cpp:938:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 2, fp);
^
MF.cpp: In member function ‘void Literal::code(Output)’:
MF.cpp:175:6: warning: ‘%04X’ directive writing between 4 and 8 bytes into a region of size 5 [-Wformat-overflow=]
void Literal::code(Output out)
^~~~~~~
MF.cpp:175:6: note: directive argument in the range [1, 4294967295]
In file included from /usr/include/stdio.h:862:0,
from MF.cpp:26:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:34:43: note: ‘__builtin___sprintf_chk’ output between 10 and 14 bytes into a destination of size 10
__bos (__s), __fmt, __va_arg_pack ());
^
MF.cpp: In member function ‘void Parser::parseAll()’:
MF.cpp:2599:10: warning: ‘iwsym’ may be used uninitialized in this function [-Wmaybe-uninitialized]
Symbol iwsym;
^~~~~
g++ -c -g -DDB_VERSION=""2.0"" -DAPPDIR=""/home/name/Bureau/dragonbasic-master"" -Wall -O2 -DBUG_FOR_BUG MF_mappy.cpp -o MF_mappy.o.linux
MF_mappy.cpp: In function ‘int Decode(const char, Output)’:
MF_mappy.cpp:276:8: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(block,tagLen,1,f);
^
g++ -o mf MF.o.linux MF_mappy.o.linux -lsndfile -lfreeimage
make -C ./pimpmobile_r1/converter TARGET=converter CXX=g++ LD=g++
make[2] : on entre dans le répertoire « /home/name/Bureau/dragonbasic-master/pimpmobile_r1/converter »
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c converter.cpp -o converter.o.linux -MMD -MP -MF converter.d
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c converter_xm.cpp -o converter_xm.o.linux -MMD -MP -MF converter_xm.d
converter_xm.cpp: In function ‘module_t load_module_xm(FILE)’:
converter_xm.cpp:81:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(temp, 17, 1, fp);
^
converter_xm.cpp:86:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(name, 20, 1, fp);
^
converter_xm.cpp:92:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&magic, 1, 1, fp);
^
converter_xm.cpp:97:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(tracker_name, 20, 1, fp);
^
converter_xm.cpp:102:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&version, 2, 1, fp);
^
converter_xm.cpp:124:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.header_size, 4, 1, fp);
^
converter_xm.cpp:125:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.len, 2, 1, fp);
^
converter_xm.cpp:126:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.restart_pos, 2, 1, fp);
^
converter_xm.cpp:127:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.channels, 2, 1, fp);
^
converter_xm.cpp:128:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.patterns, 2, 1, fp);
^
converter_xm.cpp:129:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.instruments, 2, 1, fp);
^
converter_xm.cpp:130:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.flags, 2, 1, fp);
^
converter_xm.cpp:131:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.tempo, 2, 1, fp);
^
converter_xm.cpp:132:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.bpm, 2, 1, fp);
^
converter_xm.cpp:190:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&mod->order[0], sizeof(u8), xm_header.len, fp);
^
converter_xm.cpp:217:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&pattern_header.header_size, 4, 1, fp);
^
converter_xm.cpp:218:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&pattern_header.packing_type, 1, 1, fp);
^
converter_xm.cpp:219:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&pattern_header.rows, 2, 1, fp);
^
converter_xm.cpp:220:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&pattern_header.data_size, 2, 1, fp);
^
converter_xm.cpp:269:11: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&note, 1, 1, fp);
^
converter_xm.cpp:280:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 0)) fread(&note, 1, 1, fp);
^
converter_xm.cpp:281:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 1)) fread(&instr, 1, 1, fp);
^
converter_xm.cpp:282:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 2)) fread(&vol, 1, 1, fp);
^
converter_xm.cpp:283:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 3)) fread(&eff, 1, 1, fp);
^
converter_xm.cpp:284:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 4)) fread(&eff_param, 1, 1, fp);
^
converter_xm.cpp:337:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.header_size, 4, 1, fp);
^
converter_xm.cpp:338:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.name, 1, 22, fp);
^
converter_xm.cpp:339:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.type, 1, 1, fp);
^
converter_xm.cpp:340:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.samples, 2, 1, fp);
^
converter_xm.cpp:347:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.sample_header_size, 4, 1, fp);
^
converter_xm.cpp:348:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.sample_number, 1, 96, fp);
^
converter_xm.cpp:349:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_env, 2, 24, fp);
^
converter_xm.cpp:350:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_env, 2, 24, fp);
^
converter_xm.cpp:351:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_env_points, 1, 1, fp);
^
converter_xm.cpp:352:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_env_points, 1, 1, fp);
^
converter_xm.cpp:353:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_sustain, 1, 1, fp);
^
converter_xm.cpp:354:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_loop_start, 1, 1, fp);
^
converter_xm.cpp:355:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_loop_end, 1, 1, fp);
^
converter_xm.cpp:356:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_sustain, 1, 1, fp);
^
converter_xm.cpp:357:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_loop_start, 1, 1, fp);
^
converter_xm.cpp:358:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_loop_end, 1, 1, fp);
^
converter_xm.cpp:359:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_type, 1, 1, fp);
^
converter_xm.cpp:360:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_type, 1, 1, fp);
^
converter_xm.cpp:361:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vibrato_type, 1, 1, fp);
^
converter_xm.cpp:362:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vibrato_sweep, 1, 1, fp);
^
converter_xm.cpp:363:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vibrato_depth, 1, 1, fp);
^
converter_xm.cpp:364:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vibrato_rate, 1, 1, fp);
^
converter_xm.cpp:365:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.volume_fadeout, 2, 1, fp);
^
converter_xm.cpp:466:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.length, 4, 1, fp);
^
converter_xm.cpp:467:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.loop_start, 4, 1, fp);
^
converter_xm.cpp:468:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.loop_length, 4, 1, fp);
^
converter_xm.cpp:469:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.volume, 1, 1, fp);
^
converter_xm.cpp:470:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.fine_tune, 1, 1, fp);
^
converter_xm.cpp:471:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.type, 1, 1, fp);
^
converter_xm.cpp:472:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.pan, 1, 1, fp);
^
converter_xm.cpp:473:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.rel_note, 1, 1, fp);
^
converter_xm.cpp:475:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.name, 1, 22, fp);
^
converter_xm.cpp:570:11: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&data, 1, 2, fp);
^
converter_xm.cpp:581:11: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&data, 1, 1, fp);
^
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c converter_s3m.cpp -o converter_s3m.o.linux -MMD -MP -MF converter_s3m.d
converter_s3m.cpp: In function ‘module_t* load_module_s3m(FILE*)’:
converter_s3m.cpp:19:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(sig, 1, 4, fp);
^
converter_s3m.cpp:25:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sig2, 1, 1, fp);
^
converter_s3m.cpp:30:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&type, 1, 1, fp);
^
converter_s3m.cpp:65:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&name, 1, 28, fp);
^
converter_s3m.cpp:73:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ordnum, 1, 2, fp);
^
converter_s3m.cpp:74:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insnum, 1, 2, fp);
^
converter_s3m.cpp:75:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&patnum, 1, 2, fp);
^
converter_s3m.cpp:76:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&flags, 1, 2, fp);
^
converter_s3m.cpp:107:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&state, 1, 1, fp);
^
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c converter_mod.cpp -o converter_mod.o.linux -MMD -MP -MF converter_mod.d
converter_mod.cpp: In function ‘module_t* load_module_mod(FILE*)’:
converter_mod.cpp:35:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sig, 1, 4, fp);
^
converter_mod.cpp:130:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(name, 20, 1, fp);
^
converter_mod.cpp:145:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 22, fp);
^
converter_mod.cpp:179:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 2, fp);
^
converter_mod.cpp:182:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 1, fp);
^
converter_mod.cpp:186:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&samp.default_volume, 1, 1, fp);
^
converter_mod.cpp:188:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 2, fp);
^
converter_mod.cpp:192:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 2, fp);
^
converter_mod.cpp:208:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 1, fp);
^
converter_mod.cpp:217:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&mod->repeat_pos, 1, 1, fp);
^
converter_mod.cpp:223:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&mod->order[i], 1, 1, fp);
^
converter_mod.cpp:245:10: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 4, fp);
^
converter_mod.cpp:276:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(samp.waveform, 1, samp.length, fp);
^
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c dump_module.cpp -o dump_module.o.linux -MMD -MP -MF dump_module.d
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c dump_samples.cpp -o dump_samples.o.linux -MMD -MP -MF dump_samples.d
dump_samples.cpp: In function ‘void write_sample_dump(const char*)’:
dump_samples.cpp:94:57: warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘std::vector::size_type {aka long unsigned int}’ [-Wformat=]
printf("sample bank data size: %i bytes\n", data.size());

g++ converter.o.linux converter_xm.o.linux converter_s3m.o.linux converter_mod.o.linux dump_module.o.linux dump_samples.o.linux -o converter
make[2] : on quitte le répertoire « /home/name/Bureau/dragonbasic-master/pimpmobile_r1/converter »
cp -p ./pimpmobile_r1/converter/converter .
make[1] : on quitte le répertoire « /home/name/Bureau/dragonbasic-master »
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -Iruntime -Ttext=0x8000000 -nostdlib runtime/runtime.s -o runtime.elf
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-objcopy -O binary runtime.elf runtime.gba
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-objcopy -O binary runpimp.elf runpimp.gba
if test uname -s = Linux ; then make _all PLATFORM=linux ; fi
make[1] : on entre dans le répertoire « /home/name/Bureau/dragonbasic-master »
g++ -c -g -DDB_VERSION=""2.0"" -DAPPDIR=""/home/name/Bureau/dragonbasic-master"" -Wall -O2 -DBUG_FOR_BUG DBC.cpp -o DBC.o.linux
DBC.cpp: In function ‘void GLB_runProgramWithArgs(const char*, const char*, const char*, const char*, bool)’:
DBC.cpp:326:8: warning: ignoring return value of ‘char* getcwd(char*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
getcwd(buf, 256);
^
DBC.cpp: In function ‘void GLB_pushDir(const char*)’:
DBC.cpp:339:8: warning: ignoring return value of ‘char* getcwd(char*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
getcwd(dir_buf, 256);
^
DBC.cpp: In member function ‘Subroutine* Subroutine::findByIdent(const char*)’:
DBC.cpp:87:2: warning: nonnull argument ‘this’ compared to NULL [-Wnonnull-compare]
if (!this)
^~
DBC.cpp: In member function ‘void Compiler::doRvalArray(BasicObject*)’:
DBC.cpp:1574:6: warning: ‘[]’ directive writing 2 bytes into a region of size between 1 and 256 [-Wformat-overflow=]
void Compiler::doRvalArray(BasicObject bobj)
^~~~~~~~
In file included from /usr/include/stdio.h:862:0,
from DBC.h:30,
from DBC.cpp:38:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:34:43: note: ‘__builtin___sprintf_chk’ output between 3 and 258 bytes into a destination of size 256
__bos (__s), __fmt, __va_arg_pack ());
^
g++ -o dbc DBC.o.linux
make -C ./pimpmobile_r1 lib/libpimpmobile.a
make[2] : on entre dans le répertoire « /home/name/Bureau/dragonbasic-master/pimpmobile_r1 »
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_gba.c -o src/pimp_gba.o -MMD -MP -MF src/pimp_gba.d
In file included from src/pimp_module.h:9,
from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_instrument.h: In function 'get_sample':
src/pimp_instrument.h:45:33: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return &((pimp_sample)get_ptr(&instr->sample_ptr))[i];
^~~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_module.h:9,
from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_instrument.h: In function 'get_vol_env':
src/pimp_instrument.h:51:67: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return (pimp_envelope)(instr->vol_env_ptr == 0 ? NULL : get_ptr(&instr->vol_env_ptr));
^~~~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function 'get_pattern_data':
src/pimp_module.h:59:38: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return (pimp_pattern_entry)get_ptr(&pat->data_ptr);
^~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function '__pimp_module_get_order':
src/pimp_module.h:65:25: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return ((char)get_ptr(&mod->order_ptr))[i];
^~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function '__pimp_module_get_pattern':
src/pimp_module.h:71:34: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return &((pimp_pattern)get_ptr(&mod->pattern_ptr))[i];
^~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function '__pimp_module_get_channel':
src/pimp_module.h:77:34: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return &((pimp_channel)get_ptr(&mod->channel_ptr))[i];
^~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
In file included from src/pimp_mod_context.h:10,
from src/pimp_render.h:10,
from src/pimp_gba.c:9:
src/pimp_module.h: In function '__pimp_module_get_instrument':
src/pimp_module.h:83:37: warning: passing argument 1 of 'get_ptr' from incompatible pointer type [-Wincompatible-pointer-types]
return &((pimp_instrument)get_ptr(&mod->instrument_ptr))[i];
^~~~~~~~~~~~~~~~~~~~
In file included from src/pimp_render.h:9,
from src/pimp_gba.c:9:
src/pimp_internal.h:12:49: note: expected 'const unsigned int ' but argument is of type 'const u32 ' {aka 'const long unsigned int '}
static INLINE void get_ptr(const unsigned int offset)
^
src/pimp_gba.c: At top level:
src/pimp_gba.c:27:1: warning: variably modified '__pimp_sound_buffers' at file scope
static s8 __pimp_sound_buffers[2][SOUND_BUFFER_SIZE] IWRAM_DATA;
^~~~~~
src/pimp_gba.c:29:1: warning: variably modified '__pimp_mix_buffer' at file scope
s32 __pimp_mix_buffer[SOUND_BUFFER_SIZE] IWRAM_DATA;
^~~
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_render.c -o src/pimp_render.o -MMD -MP -MF src/pimp_render.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_envelope.c -o src/pimp_envelope.o -MMD -MP -MF src/pimp_envelope.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_debug.c -o src/pimp_debug.o -MMD -MP -MF src/pimp_debug.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -mthumb -c src/pimp_mod_context.c -o src/pimp_mod_context.o -MMD -MP -MF src/pimp_mod_context.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -marm -c src/pimp_math.c -o src/pimp_math.iwram.o -MMD -MP -MF src/pimp_math.iwram.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -mthumb-interwork -mlong-calls -O3 -fomit-frame-pointer -marm -c src/pimp_mixer.c -o src/pimp_mixer.iwram.o -MMD -MP -MF src/pimp_mixer.iwram.d
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -mthumb-interwork -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -c -o src/pimp_mixer_arm.o src/pimp_mixer_arm.S
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -mthumb-interwork -I/home/name/devkitpro/devkitARM/include -I/home/name/devkitpro/libgba/include -DRELEASE -DNDEBUG -c -o src/pimp_mixer_clip_arm.o src/pimp_mixer_clip_arm.S
src/pimp_mixer_clip_arm.S: Assembler messages:
src/pimp_mixer_clip_arm.S:156: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:158: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:165: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:167: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:174: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:176: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:189: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:191: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:196: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:198: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:203: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:205: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:210: s suffix on comparison instruction is deprecated
src/pimp_mixer_clip_arm.S:212: s suffix on comparison instruction is deprecated
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-ar rv lib/libpimpmobile.a src/pimp_gba.o src/pimp_render.o src/pimp_envelope.o src/pimp_debug.o src/pimp_mod_context.o src/pimp_math.iwram.o src/pimp_mixer.iwram.o src/pimp_mixer_arm.o src/pimp_mixer_clip_arm.o
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-ar: creating lib/libpimpmobile.a
a - src/pimp_gba.o
a - src/pimp_render.o
a - src/pimp_envelope.o
a - src/pimp_debug.o
a - src/pimp_mod_context.o
a - src/pimp_math.iwram.o
a - src/pimp_mixer.iwram.o
a - src/pimp_mixer_arm.o
a - src/pimp_mixer_clip_arm.o
make[2] : on quitte le répertoire « /home/name/Bureau/dragonbasic-master/pimpmobile_r1 »
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -Iruntime -nostdlib -I/home/name/devkitpro/libgba/include
-I./pimpmobile_r1/include -marm -T runtime/gba_cart.ld runtime/gba_crt0.s /home/name/devkitpro/devkitARM/lib/gcc/arm-none-eabi/8.1.0/crti.o
/home/name/devkitpro/devkitARM/lib/gcc/arm-none-eabi/8.1.0/crtbegin.o runtime/runpimp.c ./pimpmobile_r1/lib/libpimpmobile.a -L
/home/name/devkitpro/libgba/lib -lgcc -lsysbase -lc -lgba /home/name/devkitpro/devkitARM/lib/gcc/arm-none-eabi/8.1.0/crtend.o
/home/name/devkitpro/devkitARM/lib/gcc/arm-none-eabi/8.1.0/crtn.o -o runpimp.elf
./extract_syms.sh runpimp.elf >runtime_syms.h
g++ -c -g -DDB_VERSION=""2.0"" -DAPPDIR=""/home/name/Bureau/dragonbasic-master"" -Wall -O2 -DBUG_FOR_BUG MF.cpp -o MF.o.linux
MF.cpp: In member function ‘void Output::fixCartHeader()’:
MF.cpp:465:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(bytes, 1, 0x1c, fp);
^
MF.cpp: In member function ‘void Output::emitPalette(const char)’:
MF.cpp:681:8: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(hdr, 1, 0x18, fp);
^
MF.cpp:691:10: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(pp_rgba, 1, 4, fp);
^
MF.cpp: In member function ‘void Output::reloc8(Literal)’:
MF.cpp:840:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 2, fp);
^
MF.cpp: In member function ‘void Output::reloc12(Literal)’:
MF.cpp:871:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 4, fp);
^
MF.cpp: In member function ‘void Output::reloc24(unsigned int, unsigned int)’:
MF.cpp:896:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 4, fp);
^
MF.cpp: In member function ‘void Output::reloc10(unsigned int, unsigned int)’:
MF.cpp:916:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 2, fp);
^
MF.cpp: In member function ‘void Output::reloc8(unsigned int, unsigned int)’:
MF.cpp:938:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insn, 1, 2, fp);
^
MF.cpp: In member function ‘void Literal::code(Output)’:
MF.cpp:175:6: warning: ‘%04X’ directive writing between 4 and 8 bytes into a region of size 5 [-Wformat-overflow=]
void Literal::code(Output out)
^~~~~~~
MF.cpp:175:6: note: directive argument in the range [1, 4294967295]
In file included from /usr/include/stdio.h:862:0,
from MF.cpp:26:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:34:43: note: ‘__builtin___sprintf_chk’ output between 10 and 14 bytes into a destination of size 10
__bos (__s), __fmt, __va_arg_pack ());
^
MF.cpp: In member function ‘void Parser::parseAll()’:
MF.cpp:2599:10: warning: ‘iwsym’ may be used uninitialized in this function [-Wmaybe-uninitialized]
Symbol iwsym;
^~~~~
g++ -c -g -DDB_VERSION=""2.0"" -DAPPDIR=""/home/name/Bureau/dragonbasic-master"" -Wall -O2 -DBUG_FOR_BUG MF_mappy.cpp -o MF_mappy.o.linux
MF_mappy.cpp: In function ‘int Decode(const char, Output)’:
MF_mappy.cpp:276:8: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(block,tagLen,1,f);
^
g++ -o mf MF.o.linux MF_mappy.o.linux -lsndfile -lfreeimage
make -C ./pimpmobile_r1/converter TARGET=converter CXX=g++ LD=g++
make[2] : on entre dans le répertoire « /home/name/Bureau/dragonbasic-master/pimpmobile_r1/converter »
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c converter.cpp -o converter.o.linux -MMD -MP -MF converter.d
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c converter_xm.cpp -o converter_xm.o.linux -MMD -MP -MF converter_xm.d
converter_xm.cpp: In function ‘module_t load_module_xm(FILE)’:
converter_xm.cpp:81:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(temp, 17, 1, fp);
^
converter_xm.cpp:86:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE)’, declared with attribute warn_unused_result [-Wunused-result]
fread(name, 20, 1, fp);
^
converter_xm.cpp:92:7: warning: ignoring return value of ‘size_t fread(void, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&magic, 1, 1, fp);
^
converter_xm.cpp:97:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(tracker_name, 20, 1, fp);
^
converter_xm.cpp:102:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&version, 2, 1, fp);
^
converter_xm.cpp:124:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.header_size, 4, 1, fp);
^
converter_xm.cpp:125:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.len, 2, 1, fp);
^
converter_xm.cpp:126:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.restart_pos, 2, 1, fp);
^
converter_xm.cpp:127:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.channels, 2, 1, fp);
^
converter_xm.cpp:128:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.patterns, 2, 1, fp);
^
converter_xm.cpp:129:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.instruments, 2, 1, fp);
^
converter_xm.cpp:130:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.flags, 2, 1, fp);
^
converter_xm.cpp:131:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.tempo, 2, 1, fp);
^
converter_xm.cpp:132:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&xm_header.bpm, 2, 1, fp);
^
converter_xm.cpp:190:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&mod->order[0], sizeof(u8), xm_header.len, fp);
^
converter_xm.cpp:217:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&pattern_header.header_size, 4, 1, fp);
^
converter_xm.cpp:218:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&pattern_header.packing_type, 1, 1, fp);
^
converter_xm.cpp:219:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&pattern_header.rows, 2, 1, fp);
^
converter_xm.cpp:220:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&pattern_header.data_size, 2, 1, fp);
^
converter_xm.cpp:269:11: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&note, 1, 1, fp);
^
converter_xm.cpp:280:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 0)) fread(&note, 1, 1, fp);
^
converter_xm.cpp:281:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 1)) fread(&instr, 1, 1, fp);
^
converter_xm.cpp:282:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 2)) fread(&vol, 1, 1, fp);
^
converter_xm.cpp:283:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 3)) fread(&eff, 1, 1, fp);
^
converter_xm.cpp:284:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
if (pack & (1 << 4)) fread(&eff_param, 1, 1, fp);
^
converter_xm.cpp:337:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.header_size, 4, 1, fp);
^
converter_xm.cpp:338:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.name, 1, 22, fp);
^
converter_xm.cpp:339:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.type, 1, 1, fp);
^
converter_xm.cpp:340:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.samples, 2, 1, fp);
^
converter_xm.cpp:347:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.sample_header_size, 4, 1, fp);
^
converter_xm.cpp:348:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.sample_number, 1, 96, fp);
^
converter_xm.cpp:349:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_env, 2, 24, fp);
^
converter_xm.cpp:350:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_env, 2, 24, fp);
^
converter_xm.cpp:351:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_env_points, 1, 1, fp);
^
converter_xm.cpp:352:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_env_points, 1, 1, fp);
^
converter_xm.cpp:353:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_sustain, 1, 1, fp);
^
converter_xm.cpp:354:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_loop_start, 1, 1, fp);
^
converter_xm.cpp:355:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_loop_end, 1, 1, fp);
^
converter_xm.cpp:356:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_sustain, 1, 1, fp);
^
converter_xm.cpp:357:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_loop_start, 1, 1, fp);
^
converter_xm.cpp:358:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_loop_end, 1, 1, fp);
^
converter_xm.cpp:359:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vol_type, 1, 1, fp);
^
converter_xm.cpp:360:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.pan_type, 1, 1, fp);
^
converter_xm.cpp:361:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vibrato_type, 1, 1, fp);
^
converter_xm.cpp:362:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vibrato_sweep, 1, 1, fp);
^
converter_xm.cpp:363:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vibrato_depth, 1, 1, fp);
^
converter_xm.cpp:364:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.vibrato_rate, 1, 1, fp);
^
converter_xm.cpp:365:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ih.volume_fadeout, 2, 1, fp);
^
converter_xm.cpp:466:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.length, 4, 1, fp);
^
converter_xm.cpp:467:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.loop_start, 4, 1, fp);
^
converter_xm.cpp:468:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.loop_length, 4, 1, fp);
^
converter_xm.cpp:469:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.volume, 1, 1, fp);
^
converter_xm.cpp:470:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.fine_tune, 1, 1, fp);
^
converter_xm.cpp:471:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.type, 1, 1, fp);
^
converter_xm.cpp:472:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.pan, 1, 1, fp);
^
converter_xm.cpp:473:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.rel_note, 1, 1, fp);
^
converter_xm.cpp:475:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sh.name, 1, 22, fp);
^
converter_xm.cpp:570:11: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&data, 1, 2, fp);
^
converter_xm.cpp:581:11: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&data, 1, 1, fp);
^
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c converter_s3m.cpp -o converter_s3m.o.linux -MMD -MP -MF converter_s3m.d
converter_s3m.cpp: In function ‘module_t* load_module_s3m(FILE*)’:
converter_s3m.cpp:19:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(sig, 1, 4, fp);
^
converter_s3m.cpp:25:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sig2, 1, 1, fp);
^
converter_s3m.cpp:30:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&type, 1, 1, fp);
^
converter_s3m.cpp:65:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&name, 1, 28, fp);
^
converter_s3m.cpp:73:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&ordnum, 1, 2, fp);
^
converter_s3m.cpp:74:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&insnum, 1, 2, fp);
^
converter_s3m.cpp:75:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&patnum, 1, 2, fp);
^
converter_s3m.cpp:76:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&flags, 1, 2, fp);
^
converter_s3m.cpp:107:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&state, 1, 1, fp);
^
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c converter_mod.cpp -o converter_mod.o.linux -MMD -MP -MF converter_mod.d
converter_mod.cpp: In function ‘module_t* load_module_mod(FILE*)’:
converter_mod.cpp:35:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&sig, 1, 4, fp);
^
converter_mod.cpp:130:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(name, 20, 1, fp);
^
converter_mod.cpp:145:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 22, fp);
^
converter_mod.cpp:179:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 2, fp);
^
converter_mod.cpp:182:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 1, fp);
^
converter_mod.cpp:186:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&samp.default_volume, 1, 1, fp);
^
converter_mod.cpp:188:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 2, fp);
^
converter_mod.cpp:192:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 2, fp);
^
converter_mod.cpp:208:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 1, fp);
^
converter_mod.cpp:217:7: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&mod->repeat_pos, 1, 1, fp);
^
converter_mod.cpp:223:8: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(&mod->order[i], 1, 1, fp);
^
converter_mod.cpp:245:10: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(buf, 1, 4, fp);
^
converter_mod.cpp:276:9: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(samp.waveform, 1, samp.length, fp);
^
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c dump_module.cpp -o dump_module.o.linux -MMD -MP -MF dump_module.d
g++ -DRELEASE -DNDEBUG -O3 -fomit-frame-pointer -c dump_samples.cpp -o dump_samples.o.linux -MMD -MP -MF dump_samples.d
dump_samples.cpp: In function ‘void write_sample_dump(const char*)’:
dump_samples.cpp:94:57: warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘std::vector::size_type {aka long unsigned int}’ [-Wformat=]
printf("sample bank data size: %i bytes\n", data.size());

g++ converter.o.linux converter_xm.o.linux converter_s3m.o.linux converter_mod.o.linux dump_module.o.linux dump_samples.o.linux -o converter
make[2] : on quitte le répertoire « /home/name/Bureau/dragonbasic-master/pimpmobile_r1/converter »
cp -p ./pimpmobile_r1/converter/converter .
make[1] : on quitte le répertoire « /home/name/Bureau/dragonbasic-master »
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-gcc -Iruntime -Ttext=0x8000000 -nostdlib runtime/runtime.s -o runtime.elf
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-objcopy -O binary runtime.elf runtime.gba
/home/name/devkitpro/devkitARM/bin/arm-none-eabi-objcopy -O binary runpimp.elf runpimp.gba


and after in the folder examples, if i do : make
cd breakout; ../../dbc -sym breakout.dbc breakout.gba
Segmentation fault (core dumped)
Makefile:26: recipe for target 'breakout/breakout.gba' failed
make: *** [breakout/breakout.gba] Error 139
Please help me
Thanks

'PlayMusic' command produces audio artifacts (clicking) when a music loop is restarted.

Issue found using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

When using the 'PlayMusic' command, audio artifacts (clicking) can be heard when a music loop is restarted. This means on short loops, the users is constantly hearing a clicking sound that is distracting and a clear indication that looping music is being used.

Workaround: Replace 'PlayMusic' code from 'sound.f' with the original Dragon Basic code and the clicking sound will only occur on first loop. To further eliminate the initial first loop click sound, paste a copy of the interrupt code (from original Dragon Basic) immediately after the 'PlayMusic' code to bypass the first loop entirely.

Bundle a module/tracker library that supports volume control and automatic (background) playback.

Possible enhancement identified using the latest version of Dragon Basic under Linux (Commit ID: d2ce042)

With the previous closed-source version of Dragon Basic (including all community add-on libraries), the included module tracker supported volume control (fade in/fade out), as well as background music playback. While the new included library supports more tracker formats and arbitrary pattern/playback control, it lacks control for volume (fading in and out music).

In addition, in order to use the new library, users need to include update calls in the form of "modvblank" and "modframe" to their code at very specific timings in order for music to playback correctly. In the previous implementation of tracker support for Dragon Basic, users simply called "Nmod_Play" and music would play in the background automatically. This is useful since some games may not be written in such a way that "modvblank" and "modframe" can always be called when needed. An example of this is any game that does not use a "Main loop" for it's game engine (Ie. visual novels, or anything with arbitrary branching paths which may or may not block code execution until a user makes a decision). Unless you pepper "modvblank" and "modframe" everywhere (which still may not work due to timing), there is no single/central loop where you can add it to your code.

Note: I tried setting up interrupts using vBlanks, etc, to automatically handle playback in the background, but nothing seemed to work. Ether the interrupts took up 100% of the CPU time (Ie. By the time it finished another interrupt already triggered so it never returned back to my code - I suspect), or the music came out garbled because the timings were off (but it did return to my code).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.