1 /* 2 3 Copyright (C) 2015-2018 Night Dive Studios, LLC. 4 5 This program is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation, either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 */ 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 extern fix fix_mul_asm_safe(fix a, fix b); 24 #ifdef __cplusplus 25 } 26 #endif 27 28 // InvDIv = 0 to use divs in mappers, !=0 to use inverse multiplies 29 #define InvDiv 1 30 31 // this macro does a safe divide on a light, which we can shift up for more 32 // precision 33 #define fix_mul_asm_safe_light(a, b) ((fix_mul_asm_safe(a, b) + 0x00FF) >> 8) 34