mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
void math_DefinePI(void);
|
int32_t math_Callback_PI(void);
|
||||||
void math_Print(int32_t i);
|
void math_Print(int32_t i);
|
||||||
int32_t math_Sin(int32_t i);
|
int32_t math_Sin(int32_t i);
|
||||||
int32_t math_Cos(int32_t i);
|
int32_t math_Cos(int32_t i);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include "asm/mymath.h"
|
#include "asm/mymath.h"
|
||||||
#include "asm/symbol.h"
|
#include "asm/symbol.h"
|
||||||
|
#include "asm/warning.h"
|
||||||
|
|
||||||
#define fx2double(i) ((double)((i) / 65536.0))
|
#define fx2double(i) ((double)((i) / 65536.0))
|
||||||
#define double2fx(d) ((int32_t)((d) * 65536.0))
|
#define double2fx(d) ((int32_t)((d) * 65536.0))
|
||||||
@@ -26,11 +27,13 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define the _PI symbol
|
* Return the _PI symbol value
|
||||||
*/
|
*/
|
||||||
void math_DefinePI(void)
|
int32_t math_Callback_PI(void)
|
||||||
{
|
{
|
||||||
sym_AddEqu("_PI", double2fx(M_PI));
|
warning(WARNING_OBSOLETE, "`_PI` is deprecated; use 3.14159\n");
|
||||||
|
|
||||||
|
return double2fx(M_PI);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -720,5 +720,12 @@ void sym_Init(time_t now)
|
|||||||
labelScope = NULL;
|
labelScope = NULL;
|
||||||
anonLabelID = 0;
|
anonLabelID = 0;
|
||||||
|
|
||||||
math_DefinePI();
|
/* _PI is deprecated */
|
||||||
|
struct Symbol *_PISymbol = createBuiltinSymbol("_PI");
|
||||||
|
|
||||||
|
_PISymbol->type = SYM_EQU;
|
||||||
|
_PISymbol->src = NULL;
|
||||||
|
_PISymbol->fileLine = 0;
|
||||||
|
_PISymbol->hasCallback = true;
|
||||||
|
_PISymbol->numCallback = math_Callback_PI;
|
||||||
}
|
}
|
||||||
|
|||||||
4
test/asm/deprecated-pi.asm
Normal file
4
test/asm/deprecated-pi.asm
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
; Remove this test case when _PI is removed.
|
||||||
|
PRINTF _PI
|
||||||
|
PRINTT "\n"
|
||||||
|
PURGE _PI
|
||||||
5
test/asm/deprecated-pi.err
Normal file
5
test/asm/deprecated-pi.err
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
warning: deprecated-pi.asm(2): [-Wobsolete]
|
||||||
|
`_PI` is deprecated; use 3.14159
|
||||||
|
ERROR: deprecated-pi.asm(4):
|
||||||
|
Built-in symbol '_PI' cannot be purged
|
||||||
|
error: Assembly aborted (1 errors)!
|
||||||
1
test/asm/deprecated-pi.out
Normal file
1
test/asm/deprecated-pi.out
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.14159
|
||||||
@@ -13,7 +13,7 @@ PRINTT STRFMT(TEMPLATE, "roses", "red")
|
|||||||
PRINTT STRFMT(TEMPLATE, "violets", "blue")
|
PRINTT STRFMT(TEMPLATE, "violets", "blue")
|
||||||
PRINTT STRFMT(TEMPLATE, "void", 0, "extra")
|
PRINTT STRFMT(TEMPLATE, "void", 0, "extra")
|
||||||
|
|
||||||
PRINTT STRCAT(STRFMT(STRFMT("%%%s.%d%s", "", 9, "f"), _PI), \
|
PRINTT STRCAT(STRFMT(STRFMT("%%%s.%d%s", "", 9, "f"), 3.14159), \
|
||||||
STRFMT(" ~ %s\n", STRFMT("%s%x", "thr", 238)))
|
STRFMT(" ~ %s\n", STRFMT("%s%x", "thr", 238)))
|
||||||
|
|
||||||
PRINTT STRFMT("%d eol %", 1)
|
PRINTT STRFMT("%d eol %", 1)
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
n equ 300
|
n equ 300
|
||||||
m equ -42
|
m equ -42
|
||||||
f equ -123.0456
|
f equ -123.0456
|
||||||
|
pi equ 3.14159
|
||||||
s equs "hello"
|
s equs "hello"
|
||||||
|
|
||||||
printt "<{ -6d:n}> <{+06u:n}> <{5x:n}> <{#16b:n}>\n"
|
printt "<{ -6d:n}> <{+06u:n}> <{5x:n}> <{#16b:n}>\n"
|
||||||
printt "<{u:m}> <{+3d:m}> <{#016o:m}>\n"
|
printt "<{u:m}> <{+3d:m}> <{#016o:m}>\n"
|
||||||
printt "<{f:_PI}> <{06f:f}> <{.10f:f}>\n"
|
printt "<{f:pi}> <{06f:f}> <{.10f:f}>\n"
|
||||||
printt "<{#-10s:s}> <{10s:s}>\n"
|
printt "<{#-10s:s}> <{10s:s}>\n"
|
||||||
|
|
||||||
foo: macro
|
foo: macro
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
ERROR: string-formatting.asm(9):
|
ERROR: string-formatting.asm(10):
|
||||||
Formatting string with prefix flag '#'
|
Formatting string with prefix flag '#'
|
||||||
error: Assembly aborted (1 errors)!
|
error: Assembly aborted (1 errors)!
|
||||||
|
|||||||
Reference in New Issue
Block a user