From 0dcdb7711b73e5a9b9a1f216d5049eaaad2957a0 Mon Sep 17 00:00:00 2001 From: goyuken Date: Thu, 8 May 2014 02:12:20 +0000 Subject: [PATCH] gambatte: remove a bit more junkus --- libgambatte/libgambatte.vcxproj | 2 - libgambatte/libgambatte.vcxproj.filters | 6 - libgambatte/src/bitmap_font.cpp | 330 ------------------------ libgambatte/src/bitmap_font.h | 87 ------- libgambatte/src/gambatte.cpp | 12 +- output/dll/libgambatte.dll | Bin 168448 -> 166912 bytes 6 files changed, 2 insertions(+), 435 deletions(-) delete mode 100644 libgambatte/src/bitmap_font.cpp delete mode 100644 libgambatte/src/bitmap_font.h diff --git a/libgambatte/libgambatte.vcxproj b/libgambatte/libgambatte.vcxproj index c817c75164..9ec4288c72 100644 --- a/libgambatte/libgambatte.vcxproj +++ b/libgambatte/libgambatte.vcxproj @@ -87,7 +87,6 @@ - @@ -125,7 +124,6 @@ - diff --git a/libgambatte/libgambatte.vcxproj.filters b/libgambatte/libgambatte.vcxproj.filters index e476b4c316..426b906169 100644 --- a/libgambatte/libgambatte.vcxproj.filters +++ b/libgambatte/libgambatte.vcxproj.filters @@ -87,9 +87,6 @@ Header Files - - Header Files - Header Files @@ -176,9 +173,6 @@ Source Files - - Source Files - Source Files diff --git a/libgambatte/src/bitmap_font.cpp b/libgambatte/src/bitmap_font.cpp deleted file mode 100644 index 7ef835f8c1..0000000000 --- a/libgambatte/src/bitmap_font.cpp +++ /dev/null @@ -1,330 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by Sindre Aamås * - * aamas@stud.ntnu.no * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License version 2 as * - * published by the Free Software Foundation. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License version 2 for more details. * - * * - * You should have received a copy of the GNU General Public License * - * version 2 along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -/* - The following font bitmaps (static const unsigned char *_bits[]), only used - as data and included in this source file for convenience, are derived from - the Bitstream Vera Sans font, which is distributed under the following - copyright: - - Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera - is a trademark of Bitstream, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of the fonts accompanying this license ("Fonts") and associated - documentation files (the "Font Software"), to reproduce and distribute the - Font Software, including without limitation the rights to use, copy, merge, - publish, distribute, and/or sell copies of the Font Software, and to permit - persons to whom the Font Software is furnished to do so, subject to the - following conditions: - - The above copyright and trademark notices and this permission notice shall - be included in all copies of one or more of the Font Software typefaces. - - The Font Software may be modified, altered, or added to, and in particular - the designs of glyphs or characters in the Fonts may be modified and - additional glyphs or characters may be added to the Fonts, only if the fonts - are renamed to names not containing either the words "Bitstream" or the word - "Vera". - - This License becomes null and void to the extent applicable to Fonts or Font - Software that has been modified and is distributed under the "Bitstream Vera" - names. - - The Font Software may be sold as part of a larger software package but no - copy of one or more of the Font Software typefaces may be sold by itself. - - THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM - OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR - CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM - OTHER DEALINGS IN THE FONT SOFTWARE. - - Except as contained in this notice, the names of Gnome, the Gnome - Foundation, and Bitstream Inc., shall not be used in advertising or - otherwise to promote the sale, use or other dealings in this Font Software - without prior written authorization from the Gnome Foundation or - Bitstream Inc., respectively. For further information, contact: fonts at - gnome dot org. -*/ - -#include "bitmap_font.h" - -static const unsigned char n0_bits[] = { 0x68, - 0x00, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c }; - -static const unsigned char n1_bits[] = { 0x68, - 0x00, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3e }; - -static const unsigned char n2_bits[] = { 0x68, - 0x00, 0x1c, 0x22, 0x20, 0x10, 0x08, 0x04, 0x3e }; - -static const unsigned char n3_bits[] = { 0x68, - 0x00, 0x1c, 0x22, 0x20, 0x1c, 0x20, 0x22, 0x1c }; - -static const unsigned char n4_bits[] = { 0x68, - 0x00, 0x18, 0x18, 0x14, 0x12, 0x3e, 0x10, 0x10 }; - -static const unsigned char n5_bits[] = { 0x68, - 0x00, 0x1e, 0x02, 0x1e, 0x20, 0x20, 0x20, 0x1e }; - -static const unsigned char n6_bits[] = { 0x68, - 0x00, 0x3c, 0x06, 0x02, 0x1e, 0x22, 0x22, 0x1c }; - -static const unsigned char n7_bits[] = { 0x68, - 0x00, 0x3e, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04 }; - -static const unsigned char n8_bits[] = { 0x68, - 0x00, 0x1c, 0x22, 0x22, 0x1c, 0x22, 0x22, 0x1c }; - -static const unsigned char n9_bits[] = { 0x68, - 0x00, 0x1c, 0x22, 0x22, 0x3c, 0x20, 0x30, 0x1e }; - -static const unsigned char A_bits[] = { 0x78, - 0x00, 0x08, 0x14, 0x14, 0x22, 0x3e, 0x22, 0x41 }; - -static const unsigned char a_bits[] = { 0x68, - 0x00, 0x00, 0x00, 0x1c, 0x20, 0x3c, 0x22, 0x3e }; - -static const unsigned char B_bits[] = { 0x78, - 0x00, 0x1e, 0x22, 0x22, 0x1e, 0x22, 0x22, 0x1e }; - -static const unsigned char b_bits[] = { 0x68, - 0x02, 0x02, 0x02, 0x1e, 0x22, 0x22, 0x22, 0x1e }; - -static const unsigned char C_bits[] = { 0x88, - 0x00, 0x38, 0x44, 0x02, 0x02, 0x02, 0x44, 0x38 }; - -static const unsigned char c_bits[] = { 0x58, - 0x00, 0x00, 0x00, 0x1c, 0x02, 0x02, 0x02, 0x1c }; - -static const unsigned char D_bits[] = { 0x88, - 0x00, 0x3e, 0x62, 0x42, 0x42, 0x42, 0x62, 0x3e }; - -static const unsigned char d_bits[] = { 0x68, - 0x20, 0x20, 0x20, 0x3c, 0x22, 0x22, 0x22, 0x3c }; - -static const unsigned char E_bits[] = { 0x78, - 0x00, 0x3e, 0x02, 0x02, 0x3e, 0x02, 0x02, 0x3e }; - -static const unsigned char e_bits[] = { 0x68, - 0x00, 0x00, 0x00, 0x1c, 0x22, 0x3e, 0x02, 0x3c }; - -static const unsigned char F_bits[] = { 0x68, - 0x00, 0x1e, 0x02, 0x02, 0x1e, 0x02, 0x02, 0x02 }; - -static const unsigned char f_bits[] = { 0x48, - 0x0e, 0x02, 0x02, 0x07, 0x02, 0x02, 0x02, 0x02 }; - -static const unsigned char G_bits[] = { 0x88, - 0x00, 0x3c, 0x46, 0x02, 0x72, 0x42, 0x46, 0x3c }; - -static const unsigned char g_bits[] = { 0x6a, - 0x00, 0x00, 0x00, 0x3c, 0x22, 0x22, 0x22, 0x3c, 0x20, 0x1c }; - -static const unsigned char H_bits[] = { 0x88, - 0x00, 0x42, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42 }; - -static const unsigned char h_bits[] = { 0x68, - 0x02, 0x02, 0x02, 0x1e, 0x22, 0x22, 0x22, 0x22 }; - -static const unsigned char I_bits[] = { 0x38, - 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }; - -static const unsigned char i_bits[] = { 0x28, - 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02 }; - -static const unsigned char J_bits[] = { 0x4a, - 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03 }; - -static const unsigned char j_bits[] = { 0x2a, - 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03 }; - -static const unsigned char K_bits[] = { 0x78, - 0x00, 0x22, 0x12, 0x0a, 0x06, 0x0a, 0x12, 0x22 }; - -static const unsigned char k_bits[] = { 0x58, - 0x02, 0x02, 0x02, 0x12, 0x0a, 0x06, 0x0a, 0x12 }; - -static const unsigned char L_bits[] = { 0x68, - 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x3e }; - -static const unsigned char l_bits[] = { 0x28, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }; - -static const unsigned char M_bits[] = { 0x98, - 0x00, 0x00, 0x82, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xaa, 0x00, 0xaa, 0x00, - 0x92, 0x00, 0x82, 0x00 }; - -static const unsigned char m_bits[] = { 0xa8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x01, 0x22, 0x02, 0x22, 0x02, - 0x22, 0x02, 0x22, 0x02 }; - -static const unsigned char N_bits[] = { 0x88, - 0x00, 0x42, 0x46, 0x4a, 0x4a, 0x52, 0x62, 0x42 }; - -static const unsigned char n_bits[] = { 0x68, - 0x00, 0x00, 0x00, 0x1e, 0x22, 0x22, 0x22, 0x22 }; - -static const unsigned char O_bits[] = { 0x88, - 0x00, 0x3c, 0x66, 0x42, 0x42, 0x42, 0x66, 0x3c }; - -static const unsigned char o_bits[] = { 0x68, - 0x00, 0x00, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x1c }; - -static const unsigned char P_bits[] = { 0x78, - 0x00, 0x1e, 0x22, 0x22, 0x1e, 0x02, 0x02, 0x02 }; - -static const unsigned char p_bits[] = { 0x6a, - 0x00, 0x00, 0x00, 0x1e, 0x22, 0x22, 0x22, 0x1e, 0x02, 0x02 }; - -static const unsigned char Q_bits[] = { 0x89, - 0x00, 0x3c, 0x66, 0x42, 0x42, 0x42, 0x26, 0x1c, 0x20 }; - -static const unsigned char q_bits[] = { 0x6a, - 0x00, 0x00, 0x00, 0x3c, 0x22, 0x22, 0x22, 0x3c, 0x20, 0x20 }; - -static const unsigned char R_bits[] = { 0x78, - 0x00, 0x1e, 0x22, 0x22, 0x1e, 0x12, 0x22, 0x42 }; - -static const unsigned char r_bits[] = { 0x48, - 0x00, 0x00, 0x00, 0x0e, 0x02, 0x02, 0x02, 0x02 }; - -static const unsigned char S_bits[] = { 0x78, - 0x00, 0x1c, 0x22, 0x02, 0x1c, 0x20, 0x22, 0x1c }; - -static const unsigned char s_bits[] = { 0x58, - 0x00, 0x00, 0x00, 0x1e, 0x02, 0x1c, 0x10, 0x1e }; - -static const unsigned char T_bits[] = { 0x58, - 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }; - -static const unsigned char t_bits[] = { 0x48, - 0x00, 0x02, 0x02, 0x0f, 0x02, 0x02, 0x02, 0x0e }; - -static const unsigned char U_bits[] = { 0x88, - 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c }; - -static const unsigned char u_bits[] = { 0x68, - 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x3c }; - -static const unsigned char V_bits[] = { 0x78, - 0x00, 0x41, 0x41, 0x22, 0x22, 0x14, 0x14, 0x08 }; - -static const unsigned char v_bits[] = { 0x68, - 0x00, 0x00, 0x00, 0x22, 0x22, 0x14, 0x14, 0x08 }; - -static const unsigned char W_bits[] = { 0x98, - 0x00, 0x00, 0x11, 0x01, 0x11, 0x01, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, - 0x44, 0x00, 0x44, 0x00 }; - -static const unsigned char w_bits[] = { 0x88, - 0x00, 0x00, 0x00, 0x92, 0xaa, 0xaa, 0x44, 0x44 }; - -static const unsigned char X_bits[] = { 0x68, - 0x00, 0x21, 0x12, 0x0c, 0x0c, 0x0c, 0x12, 0x21 }; - -static const unsigned char x_bits[] = { 0x68, - 0x00, 0x00, 0x00, 0x22, 0x14, 0x08, 0x14, 0x22 }; - -static const unsigned char Y_bits[] = { 0x78, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08 }; - -static const unsigned char y_bits[] = { 0x6a, - 0x00, 0x00, 0x00, 0x22, 0x22, 0x14, 0x14, 0x08, 0x08, 0x06 }; - -static const unsigned char Z_bits[] = { 0x68, - 0x00, 0x3f, 0x10, 0x08, 0x0c, 0x04, 0x02, 0x3f }; - -static const unsigned char z_bits[] = { 0x58, - 0x00, 0x00, 0x00, 0x1e, 0x10, 0x08, 0x04, 0x1e }; - -static const unsigned char SPC_bits[] = { 0x38, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - -namespace bitmapfont { -const unsigned char *const font[] = { - 0, - n0_bits, n1_bits, n2_bits, n3_bits, n4_bits, n5_bits, n6_bits, n7_bits, n8_bits, n9_bits, - A_bits, B_bits, C_bits, D_bits, E_bits, F_bits, G_bits, H_bits, I_bits, J_bits, K_bits, L_bits, M_bits, - N_bits, O_bits, P_bits, Q_bits, R_bits, S_bits, T_bits, U_bits, V_bits, W_bits, X_bits, Y_bits, Z_bits, - a_bits, b_bits, c_bits, d_bits, e_bits, f_bits, g_bits, h_bits, i_bits, j_bits, k_bits, l_bits, m_bits, - n_bits, o_bits, p_bits, q_bits, r_bits, s_bits, t_bits, u_bits, v_bits, w_bits, x_bits, y_bits, z_bits, - SPC_bits -}; - -unsigned getWidth(const char *chars) { - unsigned w = 0; - - while (const int character = *chars++) { - w += *font[character] >> 4; - } - - return w; -} - -namespace { -class Rgb32Fill { - const unsigned long color; - -public: - explicit Rgb32Fill(unsigned long color) : color(color) {} - - void operator()(gambatte::uint_least32_t *dest, unsigned /*pitch*/) const { - *dest = color; - } -}; -} - -void print(gambatte::uint_least32_t *dest, const unsigned pitch, const unsigned long color, const char *chars) { - print(dest, pitch, Rgb32Fill(color), chars); -} - -static void reverse(char *first, char *last) { - while (first < last) { - const int tmp = *first; - - *first = *last; - *last = tmp; - - ++first; - --last; - } -} - -void utoa(unsigned u, char *a) { - char *aa = a; - - while (u > 9) { - const unsigned div = u / 10; - const unsigned rem = u % 10; - - u = div; - *aa++ = rem + N0; - } - - *aa = u + N0; - - reverse(a, aa); -} -} diff --git a/libgambatte/src/bitmap_font.h b/libgambatte/src/bitmap_font.h deleted file mode 100644 index 35b29fa706..0000000000 --- a/libgambatte/src/bitmap_font.h +++ /dev/null @@ -1,87 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by Sindre Aamås * - * aamas@stud.ntnu.no * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License version 2 as * - * published by the Free Software Foundation. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License version 2 for more details. * - * * - * You should have received a copy of the GNU General Public License * - * version 2 along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef BITMAP_FONT_H -#define BITMAP_FONT_H - -#include "gbint.h" - -namespace bitmapfont { -enum Char { - NUL, - N0, N1, N2, N3, N4, N5, N6, N7, N8, N9, - A, B, C, D, E, F, G, H, I, J, K, L, M, - N, O, P, Q, R, S, T, U, V, W, X, Y, Z, - a, b, c, d, e, f, g, h, i, j, k, l, m, - n, o, p, q, r, s, t, u, v, w, x, y, z, - SPC -}; - -enum { HEIGHT = 10 }; -enum { MAX_WIDTH = 9 }; -enum { NUMBER_WIDTH = 6 }; - -unsigned getWidth(const char *chars); - -// struct Fill { void operator()(RandomAccessIterator dest, unsigned pitch) { fill pixels at dest } } -template -void print(RandomAccessIterator dest, unsigned pitch, Fill fill, const char *chars); - -void print(gambatte::uint_least32_t *dest, unsigned pitch, unsigned long color, const char *chars); -void utoa(unsigned u, char *a); - -// --- INTERFACE END --- - - - -extern const unsigned char *const font[]; - -template -void print(RandomAccessIterator dest, const unsigned pitch, Fill fill, const char *chars) { - while (const int character = *chars++) { - RandomAccessIterator dst = dest; - const unsigned char *s = font[character]; - - const unsigned width = *s >> 4; - unsigned h = *s++ & 0xF; - - while (h--) { - RandomAccessIterator d = dst; - - unsigned line = *s++; - - if (width > 8) - line |= *s++ << 8; - - while (line) { - if (line & 1) - fill(d, pitch); - - line >>= 1; - ++d; - } - - dst += pitch; - } - - dest += width; - } -} -} - -#endif diff --git a/libgambatte/src/gambatte.cpp b/libgambatte/src/gambatte.cpp index f54b62f33c..dcdf63b91d 100644 --- a/libgambatte/src/gambatte.cpp +++ b/libgambatte/src/gambatte.cpp @@ -24,27 +24,19 @@ #include #include -static const std::string itos(const int i) { - std::stringstream ss; - ss << i; - return ss.str(); -} - namespace gambatte { struct GB::Priv { CPU cpu; bool gbaCgbMode; - gambatte::uint_least32_t *vbuff; + uint_least32_t vbuff[160*144]; - Priv() : gbaCgbMode(false), vbuff(0) + Priv() : gbaCgbMode(false) { - vbuff = new gambatte::uint_least32_t[160*144]; } ~Priv() { - delete[] vbuff; } }; diff --git a/output/dll/libgambatte.dll b/output/dll/libgambatte.dll index 7dc868720e546bb2187c2f0c0aac6f6825dac98d..e3a57dc706a59a0a233406c1d48d45f03e2ae514 100644 GIT binary patch delta 13437 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 Ir>`ph4>HAy3jhEB delta 14589 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